7장 : 어댑터 패턴과 퍼사드 패턴

어댑터 패턴

  • 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다.

언제 사용 ?

구현 방법

장단점

데코레이터 vs 어댑터 vs 퍼사드

  • 데코레이터 : 인터페이스는 바꾸지 않고 책임(기능)만 추가

  • 어댑터 : 한 인터페이스를 다른 인터페이스로 변환

  • 퍼사드 : 인터페이스를 간단하게 바꿈

    • 퍼사드는 인터페이스를 단순화시킬 뿐 아니라 클라이언트와 구성요소들로 이루어진 서브시스템을 분리하는 역할도 합니다.

    • 퍼사드와 어댑터는 모두 여러 개의 클래스를 감쌀 수 있습니다. 하지만 퍼사드는 인터페이스를 단순화시키기 위한 용도로 쓰이는 반면, 어댑터는 인터페이스를 다른 인터페이스로 변환하기 위한 용도로 쓰입니다.

퍼사드 패턴

  • 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.

언제 사용 ?

구현 방법

장단점

최소 지식 원칙

  • 정말 친한 친구하고만 얘기하라.

Refactoring Guru Code & Diagram

Adapter Pattern

Facade Pattern

핵심 정리

  • 기존 클래스를 사용하려고 하는데 인터페이스가 맞지 않으면 어댑터를 쓰면 됩니다.

  • 큰 인터페이스, 또는 여러 인터페이스를 단순화시키거나 통합시켜야 되는 경우에는 퍼사드를 쓰면 됩니다.

  • 어댑터는 인터페이스를 클라이언트에서 원하는 인터페이스로 바꿔주는 역할을 합니다.

  • 퍼사드는 클라이언트를 복잡한 서브시스템과 분리시켜주는 역할을 합니다.

  • 어댑터를 구현할 때는 타겟 인터페이스의 크기와 구조에 따라 코딩해야 할 분량이 결정됩니다.

  • 퍼사드 패턴에서는 서브시스템을 가지고 퍼사드를 만들고, 실제 작업은 서브클래스에 맡깁니다.

  • 어댑터 패턴에는 객체 어댑터 패턴과 클래스 어댑터 패턴이 있습니다. 클래스 어댑터를 쓰려면 다중 상속 기능이 필요합니다.

  • 한 서브시스템에 퍼사드를 여러개 만들어도 됩니다.

  • 어댑터는 객체를 감싸서 인터페이스를 바뀌기 위한 용도로, 데코레이터는 객체를 감싸서 새로운 행동을 추가하기 위한 용도로, 퍼사드는 일련의 객체들을 감싸서 단순화시키기 위한 용도로 쓰입니다.

Last updated