본문 바로가기

디자인 패턴/Java언어로 배우는 디자인패턴 입문 책 정리

Adapter 패턴

두 클래스가 서로 동일한 기능을 하지만 규격이 다를 경우 두 클래스의 규격을 맞춰주는 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