7장 : 어댑터 패턴과 퍼사드 패턴
어댑터 패턴
한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다.
언제 사용 ?
구현 방법
장단점
데코레이터 vs 어댑터 vs 퍼사드
데코레이터 : 인터페이스는 바꾸지 않고 책임(기능)만 추가
어댑터 : 한 인터페이스를 다른 인터페이스로 변환
퍼사드 : 인터페이스를 간단하게 바꿈
퍼사드는 인터페이스를 단순화시킬 뿐 아니라 클라이언트와 구성요소들로 이루어진 서브시스템을 분리하는 역할도 합니다.
퍼사드와 어댑터는 모두 여러 개의 클래스를 감쌀 수 있습니다. 하지만 퍼사드는 인터페이스를 단순화시키기 위한 용도로 쓰이는 반면, 어댑터는 인터페이스를 다른 인터페이스로 변환하기 위한 용도로 쓰입니다.
퍼사드 패턴
어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.
언제 사용 ?
구현 방법
장단점
Refactoring Guru Code & Diagram
Adapter Pattern
Facade Pattern
핵심 정리
기존 클래스를 사용하려고 하는데 인터페이스가 맞지 않으면 어댑터를 쓰면 됩니다.
큰 인터페이스, 또는 여러 인터페이스를 단순화시키거나 통합시켜야 되는 경우에는 퍼사드를 쓰면 됩니다.
어댑터는 인터페이스를 클라이언트에서 원하는 인터페이스로 바꿔주는 역할을 합니다.
퍼사드는 클라이언트를 복잡한 서브시스템과 분리시켜주는 역할을 합니다.
어댑터를 구현할 때는 타겟 인터페이스의 크기와 구조에 따라 코딩해야 할 분량이 결정됩니다.
퍼사드 패턴에서는 서브시스템을 가지고 퍼사드를 만들고, 실제 작업은 서브클래스에 맡깁니다.
어댑터 패턴에는 객체 어댑터 패턴과 클래스 어댑터 패턴이 있습니다. 클래스 어댑터를 쓰려면 다중 상속 기능이 필요합니다.
한 서브시스템에 퍼사드를 여러개 만들어도 됩니다.
어댑터는 객체를 감싸서 인터페이스를 바뀌기 위한 용도로, 데코레이터는 객체를 감싸서 새로운 행동을 추가하기 위한 용도로, 퍼사드는 일련의 객체들을 감싸서 단순화시키기 위한 용도로 쓰입니다.
Last updated