퍼사드 패턴은
- 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 줍니다.
- 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있습니다.
어댑터 패턴에선 어떤 클래스의 인터페이스를 클라이언트가 원하는 인터페이스로 변환하는 방법을 배웠습니다.
퍼사드 패턴에선 인터페이스를 단순하게 바꾸려고 인터페이스를 변경합니다.
홈시어터 예시
public class HomeTheaterFacade {
PopcornPoppper popper;
Projector projector;
StreamingPlayer player;
public void watchMovie(String movie) {
popper.on();
popper.pop();
projector.on();
player.on();
player.play();
}
}
홈시어터 퍼사드 클래스를 이용하면 팝콘 튀기기, 프로젝터 on, 플레이어 on 등의 작업들을 하나의 메서드로 간단하게 처리할 수 있다.
또한 popper, projector, player 인스턴스 필드에 접근해 각각의 세부적인 기능을 직접 사용할 수도 있다.
장점
- 클라이언트는 간단하면서 유연해짐
- 홈시어터 구성 요소를 업그레이드해도 클라이언트는 아무 영향을 받지 않음
최소 지식 원칙 = 데메테르 법칙
객체 사이의 상호작용은 될 수 있으면 아주 가까운 '친구' 사이에서만 허용하는 편이 좋습니다.
//원칙을 따르지 않음
public float getTemp(){
Thermometer thermometer=station.getThermometer();
return thermometer.getTemperature();
}
//원칙을 따른 경우
public float getTemp(){
station.getTemperature();
}
참고
에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠. 『헤드퍼스트 디자인패턴 개정판』. 한빛미디어, 2022
'Design Pattern' 카테고리의 다른 글
반복자 패턴 (Iterator Pattern) (0) | 2023.10.30 |
---|---|
템플릿 메소드 패턴 (Template Method Pattern) (1) | 2023.10.26 |
어댑터 패턴 (Adapter Pattern) (0) | 2023.10.23 |
커맨드 패턴 (Command Pattern) (0) | 2023.09.27 |
싱글턴 패턴(Singleton Pattern) (2) | 2023.09.25 |