Ch7. 어댑터 패턴과 퍼사드 패턴 : 적응시키기
객체지향 어댑터
어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할을 한다.

어댑터는 클라이언트로부터 요청을 받아서 새로운 업체에서 제공하는 클래스를 클라이언트가 받아들일 수 있는 형태의 요청으로 변환해 주는 중개인 역할을 한다.
클라이언트에서 어댑터를 사용하는 방법
클라이언트에서 타깃 인터페이스로 메소드를 호출해서 어댑터에 요청을 보낸다.
어댑터는 어댑티 인터페이스로 그 요청을 어댑티에 관한 (하나 이상의) 메소드 호출로 변환한다.
클라이언트는 호출 결과를 받긴 하지만 중간에 어댑터가 있다는 사실을 모른다.
어댑터 패턴
<aside> 💡 **어댑터 패턴(Adapter Pattern)**은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와준다.
</aside>
어댑터 패턴은 여러 객체지향 원칙을 반영한다.
어댑티를 새로 바뀐 인터페이스로 감쌀 때는 객체 구성 (composition)을 사용한다.
이런 접근법은 어댑티의 모든 서브클래스에 어댑터를 쓸 수 있다는 장점이 있다.
클라이언트를 특정 구현이 아닌 인터페이스에 연결한다. 이렇게 인터페이스를 기준으로 코딩했기에 타깃 인터페이스만 제대로 유지한다면 나중에 다른 구현을 추가하는 것도 가능하다.
Enumeratioin을 Iterator에 적응시키기
퍼사드 패턴
서브 시스템의 기능을 사용할 수 있는 간단하 인터페이스를 제공
클라이언트에서 특정 인터페이스가 필요하다면 서브시스템 클래스를 그냥 사용하면됨
퍼사드를 사용하면 클라이언트 구현과 서브시스템을 분리할 수 있다.
⇒ 퍼사드는 인터페이스를 아주 단순하게 만들고 클라이언트와 구성요소로 이루어진 서브시스템을 분리하는 역할도 한다.
퍼사드와 어댑터는 모두 여러 개의 클래스를 감쌀 수 있다. 하지만 퍼사드는 인터페이스를 단순하게 만드는 용도로 쓰이는 반면, 어댑터는 인터페이스를 다른 인터페이스로 변환하는 용도로 쓰인다.
💡 퍼사드 패턴(Facade Pattern)은 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어준다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있다.
최소 지식 원칙 (Principle of Least Knowledge)
객체사이의 상호작용은 될 수 있으면 아주 가까운 ‘친구’ 사이에서만 허용하는 편이 좋다.
Last updated