디자인패턴 4

[Design Pattern] Facade Pattern

이번에는 Facade Pattern 에 대해서 알아봅시다. Facade Pattern 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다. 이번에는 바로 디자인 원칙도 살펴보겠습니다. "최소 지식 원칙" 입니다. 객체 사이의 상호작용은 될 수 있으면 아주 가까운 사이에서만 허용하라는 원칙입니다. 퍼사드 패턴은 단순화된 인터페이스를 통해서 서브시스템을 더 쉽게 사용할 수 있도록 하기 위한 용도로 쓰입니다. 위의 예시에서 클라이언트는 HomeTheaterFacade 하나에만 상호작용을 하고 있습니다 (최소 지식 원칙) HomeTheaterFacade 는 클라이언트 대신 모든 서브시스템 구성요소를 관리해주..

[Design Pattern] Command Pattern

이번에는 커맨드 패턴입니다. Command Pattern 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러가지 다른 요구 사항을 집어넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업 취소 기능도 지원 가능하다. 먼저 다이어그램을 보면서 어떤 모양일지 얘기해보겠습니다. 이제 디자인 패턴을 1/3 정도 보다보니, 인터페이스를 잘 활용하는 것이 중요하다고 생각이 듭니다. 캡슐화하거나 추상화하거나 감싸거나 하는 것들에 인터페이스가 들어가거나 혹은 구성을 이용한다거나 하는 것 같습니다. 앞으로는 바로 다이어그램을 보면서 어떤 모양일지 추리해보는 것도 좋은 공부방법이 아닐까 하는 생각이 드네요 🤔 다이어그램을 보겠습니다. Client 는 Co..

[Design Pattern] Abstract Factory Pattern

이전 글에 이어서 팩토리 패턴 중 추상 팩토리 패턴에 대해서 학습하겠습니다. Abstract Factory Pattern 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성한다. 팩토리 메소드 패턴을 공부하면서 피자가게 예를 들었었는데요, 추상 팩토리 패턴을 이해하기 위해서 같은 예시로 이어가보겠습니다. 이제는 원재료의 품질을 관리하고 싶다는 요구사항이 들어왔습니다. 근데 뉴욕 스타일과 시카고 스타일의 재료는 또 다르겠죠. 이런 것들을 어떻게 해결 할 수 있을지 보겠습니다. 좀 복잡한 모양이 되었습니다. 이 다이어그램에 대해서 설명을 해보면 PizzaIngredientFactory 는 서로 관련된 제품군을 만드는 방법을 정의하기 위한 인터페..

[Design Pattern] Factory Method Pattern

이번에는 팩토리 메소드 패턴에 대해서 학습하겠습니다. Factory Method Pattern 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다. 우리는 객체를 만들때 new 를 사용해왔습니다. 그런데 new 를 사용해서 인스턴스를 생성하면 결국은 특정 구현을 이용한다는 뜻이기도 합니다. new 에 문제가 있는 것은 아니지만 특정 객체를 만드는 형태여서 수정이 일어난다면 고쳐야 하는 코드가 계속해서 생기게 될 것이고, OCP 원칙을 위배할 가능성이 높아집니다. 책에 있는 피자 가게 예시로 어떤 패턴인지 알아보겠습니다. 위의 다이어그램만 보아도 구조가 다 보여서 굳이 코드를 작성하진 않겠습니다. Pizza 인터페이스를 구..