이런거 저런거 그런거

퍼사드(Facade) 패턴 본문

카테고리 없음

퍼사드(Facade) 패턴

빵진 2021. 5. 18. 00:31

퍼사드 패턴은 인터페이스를 단순화 시키기 위해서 인터페이스를 변경하는 패턴이다.

고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용 할 수 있다.

(바꿔말하면 Client를 복잡한 서브시스템과 분리 및 서브시스템을 더 쉽게 사용하기 위해 고수준 인터페이스로 변경하여 제공하는 구조)

 

퍼사드 패턴 - 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용 할 수 있습니다.
(Head First 디자인패턴 p.302)

 

<P.292 : 각 패턴과 그 패턴의 용도 연결>

  • 데코레이터 - 인터페이스는 바꾸지 않고 책임(기능or행동)만 추가 (확장성)
  • 어댑터 - 한 인터페이스를 다른 인터페이스로 변환 (호환성)
  • 퍼사드 - 인터페이스를 간단하게 바꿈 (사용성)

Design-Patterns-Quick-Reference-Card 중 퍼사드 패턴

 

특징

  • 퍼사드 클래스에서는 서브시스템 클래스들을 캡슐화 하지 않는다.
    즉, 필요한 경우 Client에서 서브시스템을 직접 사용 가능하다.
  • 퍼사드에서 기능을 추가하여 서브시스템에 전달 할 수도 있다. (데코레이터 패턴처럼)
  • 퍼사드 클래스를 사용함으로서 Client와 서브시스템과의 의존성을 줄일 수 있다.

 

퍼사드 패턴이라고 생각 할 수 있는 사례

  • TV 기능 중 "스포츠 모드/영화 모드/..."
  • 카메라 기능 중 "야경 모드/스포츠 모드/불꽃놀이 모드/야간 모드/인물 모드/..."

 

 

 

커맨드 패턴에서 매크로 커맨드와 비교

여러 행동을 하나의 인터페이스로 제공한다는 부분에서 유사하다고 생각 할 수 있지만 아래와 같은 차이가 있다.

커맨드 패턴은 통일된 인터페이스로 행동을 캡슐화하여 유연하게 사용하는 목적이며, 매크로 커맨드는 활용 방법 중 하나.

퍼사드 패턴은 인터페이스를 단순화하는데 목적이 있으며 각 서브시스템의 인터페이스가 통일될 필요가 없음.

 


디자인 원칙 - 최소 지식 원칙(Demeter(디미터 또는 데메테르)의 법칙)
소프트웨어 모듈 사이의 결합도를 줄여서 코드의 품질을 높이자는 취지의 가이드라인

가이드라인

  • 객체 자체 (즉, 객체 자신의 메소드)
  • 메소드에 매개변수로 전달된 객체
  • 객체 자신의 메소드에서 생성하거나 인스턴스를 만든 객체
  • 객체에 속하는 구성요소(멤버변수로 저장되는 객체)

 

바람직 하지 않은 것

  • 다른 메소드를 호출해서 리턴 받은 객체의 메소드를 호출하는 것

 

Comments