Notice
Recent Posts
Recent Comments
Link
이런거 저런거 그런거
퍼사드(Facade) 패턴 본문
퍼사드 패턴은 인터페이스를 단순화 시키기 위해서 인터페이스를 변경하는 패턴이다.
고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용 할 수 있다.
(바꿔말하면 Client를 복잡한 서브시스템과 분리 및 서브시스템을 더 쉽게 사용하기 위해 고수준 인터페이스로 변경하여 제공하는 구조)
퍼사드 패턴 - 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용 할 수 있습니다.
(Head First 디자인패턴 p.302)
<P.292 : 각 패턴과 그 패턴의 용도 연결>
- 데코레이터 - 인터페이스는 바꾸지 않고 책임(기능or행동)만 추가 (확장성)
- 어댑터 - 한 인터페이스를 다른 인터페이스로 변환 (호환성)
- 퍼사드 - 인터페이스를 간단하게 바꿈 (사용성)
특징
- 퍼사드 클래스에서는 서브시스템 클래스들을 캡슐화 하지 않는다.
즉, 필요한 경우 Client에서 서브시스템을 직접 사용 가능하다. - 퍼사드에서 기능을 추가하여 서브시스템에 전달 할 수도 있다. (데코레이터 패턴처럼)
- 퍼사드 클래스를 사용함으로서 Client와 서브시스템과의 의존성을 줄일 수 있다.
퍼사드 패턴이라고 생각 할 수 있는 사례
- TV 기능 중 "스포츠 모드/영화 모드/..."
- 카메라 기능 중 "야경 모드/스포츠 모드/불꽃놀이 모드/야간 모드/인물 모드/..."
커맨드 패턴에서 매크로 커맨드와 비교
여러 행동을 하나의 인터페이스로 제공한다는 부분에서 유사하다고 생각 할 수 있지만 아래와 같은 차이가 있다.
커맨드 패턴은 통일된 인터페이스로 행동을 캡슐화하여 유연하게 사용하는 목적이며, 매크로 커맨드는 활용 방법 중 하나.
퍼사드 패턴은 인터페이스를 단순화하는데 목적이 있으며 각 서브시스템의 인터페이스가 통일될 필요가 없음.
디자인 원칙 - 최소 지식 원칙(Demeter(디미터 또는 데메테르)의 법칙)
소프트웨어 모듈 사이의 결합도를 줄여서 코드의 품질을 높이자는 취지의 가이드라인
가이드라인
- 객체 자체 (즉, 객체 자신의 메소드)
- 메소드에 매개변수로 전달된 객체
- 객체 자신의 메소드에서 생성하거나 인스턴스를 만든 객체
- 객체에 속하는 구성요소(멤버변수로 저장되는 객체)
바람직 하지 않은 것
- 다른 메소드를 호출해서 리턴 받은 객체의 메소드를 호출하는 것
Comments