하리Hari

10. 퍼사드 패턴 (Facade)

복잡한 내부 시스템을 숨기고 단순화된 단일 창구를 제공하는 퍼사드 패턴을 알아봅니다.

영화관에 가서 영화를 보려면 에어컨도 켜야 하고, 조명도 어둡게 하고, 스크린도 내리고, 영사기도 켜야 하죠? 이 모든 복잡한 과정들을 ‘영화보기’ 버튼 하나로 묶어주는 것이 바로 퍼사드(Facade, 건물의 정면 외관) 패턴이에요. 사용자는 내부의 복잡한 시스템을 알 필요 없이 묶여있는 버튼만 누르면 돼요!

(참고: 각각의 복잡한 시스템들입니다)
[에어컨]을 설계하자:
    <켜기>를 만들자 ():
        "에어컨 바람 슝슝~"을 출력하자
[조명]을 설계하자:
    <어둡게하기>를 만들자 ():
        "조명을 영화관처럼 어둡게 합니다."를 출력하자
[티비]를 설계하자:
    <넷플릭스켜기>를 만들자 ():
        "넷플릭스를 실행합니다 둥-둥!"을 출력하자

(참고: 시스템들을 모아서 단순한 버튼 하나를 제공해요)
[홈시어터]를 설계하자:
    '에어컨'을 [에어컨]인 새로운 [에어컨]()으로 정하여 숨기자
    '조명'을 [조명]인 새로운 [조명]()으로 정하여 숨기자
    '티비'를 [티비]인 새로운 [티비]()로 정하여 숨기자
    
    <영화보기>를 만들자 ():
        "--- 영화 볼 준비를 시작합니다 ---"를 출력하자
        '나'의 '에어컨'의 <켜기>()를 실행하자
        '나'의 '조명'의 <어둡게하기>()를 실행하자
        '나'의 '티비'의 <넷플릭스켜기>()를 실행하자
        "준비 완료! 팝콘을 가져오세요!"를 출력하자

'우리집'을 [홈시어터]인 새로운 [홈시어터]()로 정하자
'우리집'의 <영화보기>()를 실행하자
놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.