[소프트웨어 디자인 패턴] 9. Adapter Pattern & Facade Pattern

Adapter Pattern
- 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다.
- 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 해준다.
- 클라이언트는 Adapter 클래스가 어떤 Apatee 클래스를 포함하고 있는지 고려하지 않는다.

적용방법
- Adapter 클래스를 기존 인터페이스를 상속받아 정의한다.
- 클라이언트에서 요구한 인터페이스를 상속받은 Adaptee 클래스를 Adapter 클래스에 포함(Composition)시킨다.
Facade Pattern
- 서브 시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶는다.
- 고수준 인터페이스도 정의하므로 서브 시스템을 더 편리하게 사용할 수 있다.
- 클라이언트는 어떤 서브시스템이 Facade 클래스에 포함되어있는지 고려하지 않는다.

적용방법
- 서브 시스템의 인터페이스를 포함(Composition)시킨 Facade 클래스를 생성한다.
- 클라이언트는 Facade 클래스를 사용해서 서브 시스템의 기능을 실행한다.