컴퓨터과학/디자인패턴
[디자인패턴] 어댑터 패턴 (Adapter Pattern)
윤호
2021. 12. 5. 23:01
목적
클래스의 인터페이스를 클라이언트가 원하는 형태의 인터페이스로 변환
인터페이스 호환이 안되는 클래스를 사용할 수 있게 해줌
요소
문제 : 사용 객체의 API가 서로 다름
해결 : 함수를 변환하는 객체를 중간에 넣음
결과 : 변경 최소화
정의
어댑터를 통해 오리 대신 칠면조 사용하기
어댑터 클래스 (Turkey 인터페이스를 Duck 인터페이스로 사용할 수 있도록 만듬)
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
public void quack() {
turkey.gobble();
}
public void fly() {
turkey.fly();
}
}
Main 클래스
public static void main(String[] args) {
MallardDuck duck = new MallardDuck();
WildTurkey turkey = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(turkey);
System.out.println("\nThe Duck says...");
testDuck(duck);
System.out.println("\nThe TurkeyAdapter says...");
testDuck(turkeyAdapter);
}
static void testDuck(Duck duck) {
duck.quack();
duck.fly();
}
turkey는 quack 메소드가 없지만 Adapter를 사용해서 Duck 처럼 호출할 수 있음
reference 상명대학교 조용주 교수님