파사드 패턴
파사드 패턴은 복잡한 시스템의 내부 구현을 숨기고, 외부에 간단하고 일관된 인터페이스를 제공하는 구조를 뜻한다. 이렇게 함으로써 클라이언트는 시스템의 복잡한 구성 요소와 상호작용할 필요 없이, 필요한 기능을 더 쉽게 사용할 수 있다. 파사드 패턴은 주로 서브시스템이 복잡하거나 여러 개의 모듈을 다뤄야 할 때 유용하다. 이를 통해 각 모듈이나 클래스를 개별적으로 이해하거나 다룰 필요 없이, 하나의 간단한 인터페이스를 통해 복잡한 작업을 수행할 수 있다. 예를 들어, 다양한 하위 시스템을 하나의 메서드를 통해 호출하도록 묶어서, 클라이언트가 시스템의 세부 사항에 신경 쓰지 않고도 필요한 기능을 쉽게 이용할 수 있도록 한다.
즉, 파사드 패턴은 여러 시스템의 복잡한 구현을 한 번에 감추고, 그 위에 간단하고 일관된 인터페이스를 제공하는데, 이는 클라이언트가 각 세부적인 로직을 이해하지 않고도 시스템을 이용할 수 있게 해주는 2중 추상화의 효과를 가진다고 볼 수 있다. 이 추상화 계층을 통해 클라이언트는 내부 시스템의 세부 사항에 신경 쓰지 않고, 필요한 작업을 간단한 인터페이스로 처리할 수 있게 된다.
// 파사드 클래스 class PizzaStore { private pizza: Pizza; private box: Box; private plasticWrap: PlasticWrap; constructor() { this.pizza = new Pizza(); this.box = new Box(); this.plasticWrap = new PlasticWrap(); } // 외부에 제공되는 공용 인터페이스 public processOrder(): void { this.preparePizza(); this.packPizza(); this.servePizza(); } // 내부적으로만 호출되는 메서드들 private preparePizza(): void { console.log('피자 준비 시작...'); this.pizza.dough(); this.pizza.topping(); this.pizza.bake(); this.pizza.cut(); } private packPizza(): void { console.log('피자 포장 시작...'); this.box.fold(); this.box.putPizza(); this.plasticWrap.wrap(); } private servePizza(): void { console.log('피자 제공!'); } } // 클라이언트 코드 const pizzaStore = new PizzaStore(); pizzaStore.processOrder();
블로그의 정보
Ayden's journal
Beard Weard Ayden