퍼사드패턴

홍범선·2023년 10월 13일
0

디자인패턴

목록 보기
4/4

퍼사드패턴

건물 외벽에서 보면 안에 구조는 보이지 않는다.
간략화된 인터페이스 안에서 시스템 안에 내포되어 있는 기능들 기타 서브클래스에 접근 할 수 있도록 해준다.

  1. 간략화된 인터페이스
  2. 직접적인 접근 제약

서브 시스템, 서브 클래스 등 다수의 다른 기능들을 한 곳에서 간단하게 접근하게 해준다.

내부 구조나 동작 원리는 쉽게 이해할 수 없다. 다시 말해서 퍼사드 인터페이스 내부의 접근할 수가 없고 할 이유가 없다.
클라이언트가 시스템 내부의 기능을 편하게 사용할 수 있도록 도와주는 역할을 한다.


손님입장에서 POS에서 주문을 하고 주문지시를 하면 해당하는 음식을 조리 한다.
여기서 주문이 퍼사드 패턴의 키워드이다.
클라이언트는 주문하기 이벤트만 신경을 쓰면 되고 그 이후에 발생하는 이벤트(주문지시, 조리 등)을 신경 쓸 필요가 없다. 이것이 퍼사드 패턴의 설계이다.

클라이언트는 newOrder 함수를 통해 오더를 전달하게 된다. 그 오더 지스를 바탕으로 퍼사드는 다른 서브 시스템들의 인스턴스를 호출한다.
kitchen(), foodService()등 을 호출한다.

class Kitchen {
  cookBurger() {
    console.log("cooking burger");
  }

  cookSide(){
    console.log("cooking side dishes");
  }

  prepareDrinks(){
    console.log("preparing drinks");
  }
}

class FoodService {
  serve() {
    console.log("Order ready, serving food now");
  }
}

class RestaurantFacade {
  newOrder() {
    const Kitchen = new Kitchen();
    Kitchen.cookBurger();
    Kitchen.cookSide();
    Kitchen.prepareDrinks();

    const FoodService = new FoodService();
    return FoodService.serve();
  }
}

class RestaurantFacade는 클라이언트와 인터페이스를 직접하는 클래스이다. newOrder()라는 함수를 통해 오더를 받고, kitchen, foodService 서브 클래스 등을 통해 처리 과정, 비즈니스 로직 등을 해당 로직에서 실행한다.

퍼사드 패턴은
매우 심플하고 쉽게 이제 다수에서 서브클래스, 인터페이스를 한 클래스에서 관리할 수 있게 도와준다. 나중에 같은 코드를 반복적으로 작성하는 것을 방지하고 또 한곳에서 중심적으로 서브 클래스를 컨트롤 하기 때문에 나중에 유지보수를 하기에도 수월하고 한눈에 의존 관계를 파악할 수 있다.

profile
알고리즘 정리 블로그입니다.

0개의 댓글