두 클래스가 서로 동일한 기능을 하지만 규격이 다를 경우 두 클래스의 규격을 맞춰주는 adapter을 만들어주는 패턴
a_v1 <-> adapter <-> a_v2
1. 코드
MyClass : Properties 클래스의 규격을 맞춰주는 adpator 역할
public class MyClass extends Properties {
public void readFromFile(String filename) throws IOException {
File file = new File(filename);
super.load(new FileInputStream(file));
}
public void writeToFile(String filename) throws IOException {
File file = new File(filename);
super.store(new FileOutputStream(file), "test");
}
public void setValue(String key, String value) {
super.setProperty(key, value);
}
public String getValue(String key) {
return super.getProperty(key);
}
}
Main : test class
public class Main {
public static void main(String[] args) {
MyClass f = new MyClass();
try {
f.readFromFile("file.txt");
String a = f.getValue("year");
System.out.println(a);
f.setValue("year", "2004");
f.setValue("month", "4");
f.setValue("day", "21");
f.writeToFile("newfile.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 특징
- 동일한 용도로 사용되지만 메소드의 이름만 달라야 하는 경우에 쓰면 좋을 듯
ex. 디비와 연결할때는 getter,setter를 카멜케이스로 사용, response에는 스테이크 케이스로 내보낼 때
3. 해당 패턴을 고려할만한 상황
- 기존에 있는 api의 새로운 형태로 변경을 해야 할때
- 로직은 동일하나 규격이 다른 api가 필요할 때
'디자인 패턴 > Java언어로 배우는 디자인패턴 입문 책 정리' 카테고리의 다른 글
Prototpye 패턴 (0) | 2021.01.03 |
---|---|
Singleton 패턴 (0) | 2021.01.01 |
Factory Method 패턴 (410) | 2020.12.31 |
Template Method 패턴 (1) | 2020.12.27 |
iterator 패턴 (0) | 2020.12.27 |