목적
클래스의 인터페이스를 클라이언트가 원하는 형태의 인터페이스로 변환
인터페이스 호환이 안되는 클래스를 사용할 수 있게 해줌
요소
문제 : 사용 객체의 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 상명대학교 조용주 교수님
'컴퓨터과학 > 디자인패턴' 카테고리의 다른 글
[디자인패턴] 커멘드 패턴 (Command Pattern) (0) | 2021.12.06 |
---|---|
[디자인패턴] 퍼사드 패턴 (Facade Pattern) (0) | 2021.12.05 |
[디자인패턴] DAO 패턴 (0) | 2021.12.04 |
[디자인패턴] 반복자 패턴 (Iterator Pattern) (0) | 2021.10.18 |
[디자인패턴] 싱글턴 패턴 (Singleton Pattern) (0) | 2021.10.18 |
댓글