본 내용은 Java언어로 배우는 디자인패턴 입문(한빛미디어) 책을 보면서 정리한 내용입니다.
Java.util.Properties 클래스에서 제공하는
void load(InputStream in) throws IOException
void store(OutputStream out, String header) throws IOException
해당 메서드들을 Adapter Pattern을 이용하여 프로퍼티의 집합을 파일에 보존하는 FileProperties 클래스를 만들기를 해본다.
Target 역할을 하는 FileIO Interface는 다음과 같이 제공이 된다.
import java.io.*;
public interface FileIO {
public void readFromFile(String filename) throws IOException;
public void writeToFile(String filename) throws IOException;
public void setValue(String key, String value);
public String getValue(String key);
}
Client 역할을 하는 Main Class 는 다음과 같이 제공이 된다.
import java.io.*;
class Main {
public static void main(String[] args) {
FileIO f = new FileProperties();
try {
f.readFromFile("file.txt");
f.setValue("year", "2000");
f.setValue("month", "11");
f.setValue("day", "20");
f.writeToFile("newfile.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}
이 때, java.util.Properties를 Adaptee로 하는 Adapter Class인 FileProperties Class를 작성해보자.
입력 파일(file.txt)
year=1999
출력 파일(newfile.txt)
#written by FileProperties
#Sat Jan 30 18:13:43 KST 2021
month=11
year=2000
day=20
Adapter 역할의 FileProperties는 다음과 같다.
import java.io.*;
import java.util.*;
public class FileProperties extends Properties implements FileIO {
public FileProperties() {
super();
}
public void readFromFile(String filename) throws IOException {
load(new FileInputStream(filename));
}
public void writeToFile(String filename) throws IOException {
store(new FileOutputStream(filename), "written by FileProperties");
}
public void setValue(String key, String value) {
setProperty(key, value);
}
public String getValue(String key) {
return getProperty(key);
}
}