Java/Design Pattern

[헤드퍼스트 디자인 패턴] 7-2. 퍼사드 패턴

noahkim_ 2024. 12. 17. 19:23

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다

 

1. 퍼사드 패턴

  • 서브시스템의 기능을 통합 인터페이스로 묶어줌
    • 여러개의 인터페이스들을 하나로 통합함
  • 인터페이스를 단순하게 바꾸려 함이 목적

 

2. 홈시어터 퍼사드

public class HomeTheaterFacade {
    Amplifier amp;
    Tuner tuner;
    StreamingPlayer player;
    Projector projector;
    TheaterLights lights;
    Screen screen;
    PopcornPopper popper;
    
    public void watchMovie(String movie) {
    	popper.on();
        popper.pop();
        lights.dim(10);
        screen.down();
        projector.on();
        projector.wideScreenMode();
        amp.on();
        amp.setStreamingPlayer(player);
        amp.setVolumne(5);
        player.on();
        player.play(movie);
    }
}

 

 

3. 최소 지식 원리

  • 객체 사이의 상호작용은 가까운 사이에만 이루어지도록
  • 메서드 체이닝 피하기
  • 정보 은닉 강화

 

장점

  • 결합도 감소
  • 코드 재사용성 향상
  • 유지보수성 향상

 

예시

외부에서 객체 내부에 직접 접근 X
Order order = customer.getOrder();
order.getItem().doSomething();
customer.processOrder();

 

헬퍼 객체 활용하기
  • 메서드가 여러 객체와 직접 상호작용 X
  • 헬퍼 객체를 통해 간접적으로 작업 처리