한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.
⇒ 인터페이스 호환성 문제로 같이 사용할 수 없는 클래스들을 연결해 쓸 수 있다.
의존성 역전 원칙(DIP)과 개방 폐쇄 원칙(OCP)을 기반으로 하는 디자인 패턴이다. 자바를 기준으로 정리하여 객체 어댑터 패턴에 대한 정보만 기술한다. (클래스 어댑터 패턴은 다중 상속을 지원하는 언어에서 사용이 가능하다)
캡슐화
되어 클라이언트를 변경할 필요가 없어진다. public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog=new DogAdapter(new GreyWolf());
dog.bark();
dog.run();
}
}
public interface Dog {
public void bark();
public void run();
}
public class DogAdapter implements Dog {
Wolf wolf;
public DogAdapter(Wolf wolf) {
this.wolf=wolf;
}
@Override
public void bark() {
// TODO Auto-generated method stub
wolf.howl();
}
@Override
public void run() {
wolf.walk();
}
}
public class GreyWolf implements Wolf{
@Override
public void howl() {
// TODO Auto-generated method stub
System.out.println("Awooooo");
}
@Override
public void walk() {
// TODO Auto-generated method stub
System.out.println("A big walks...");
}
}