프로그래밍/디자인패턴 15

디자인 패턴 - Template Method (Behavioral Pattern)

Behavioral Pattern인 Template Method Pattern에 대해 정리합니다. Definition Template Method 패턴은 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴입니다. ※ OOP의 기본인 Abstraction 의 활용 예를 보여주는 대표적인 패턴입니다. Class Diagram AbstractClass는 탬플릿 메소드를 구현. ConcreteClass는 AbstractClass 역할에서 정의되어 있는 추상 메소드를 구체적으로 구현. Sample Case 다음은 Template Method 패턴을 적용한 시나리오입니다. Scenario 사람을 나타내는 AbstractHuman 추상 클래스가 있고, 이 때 speak(..

디자인 패턴 - Interpreter (Behavioral Pattern)

Behavioral Pattern의 첫 번째인 Interpreter Pattern에 대해 정리합니다. 외부에서 만들어놓은 미니 프로그램을 해석하여 실행하는 Interpreter 를 만들어봅시다. Definition Interpreter 패턴에서는 프로그램이 해결하려는 문제를 간단한 '미니 언어'로 표현합니다. Class Diagram Singleton class의 constructor가 private으로 되어 있습니다. ※ 그래서 외부에서 객체를 별도로 생성할 수 없습니다.(중요) member field인 singleton 역시 private으로 되어 있고 class가 memory에 로딩될 때 자신의 객체가 생성됩니다. 생성된 singleton 객체는 오직 getInstance()를 통해서만 참조 가능합..

디자인 패턴 - Singleton (Creational Pattern)

Creational Pattern의 마지막인 Singleton Pattern에 대해 정리합니다. 세상(Process)에서 유일함을 보장하는 패턴입니다:) Definition Singleton은 instance가 한 개밖에 존재하지 않는 것을 보증하는 패턴입니다. ※ 디자인 패턴 중 가장 간단한 패턴이지만 가장 많이 쓰이는 패턴입니다. Class Diagram Singleton class의 constructor가 private으로 되어 있습니다. ※ 그래서 외부에서 객체를 별도로 생성할 수 없습니다.(중요) member field인 singleton 역시 private으로 되어 있고 class가 memory에 로딩될 때 자신의 객체가 생성됩니다. 생성된 singleton 객체는 오직 getInstance(..

디자인 패턴 - Prototype (Creational Pattern)

Creational Pattern인 Prototype Pattern에 대해 정리합니다. 제국을 습격하기 위해서 대량의 clone을 생성해 봅시다:) Definition Prototype은 instance로 부터 별도의 instance를 만드는 패턴입니다. Class Diagram Sample Case 다음은 Prototype 패턴을 적용한 시나리오입니다. Scenario 우리의 요리사(Cooker)는 호도과자 전문점을 차렸습니다. 다행히 아주 장사가 잘 되어 언제 주문이 들어올지 모르기 때문에 미리 호도과자 포장을 해두려고 합니다. 호도과자 개수에 따라 포장지를 다르게 싸두기 위한 틀을 만들어 놓고,(prepare()) 주문이 들어오는 즉시, 틀로부터 호도과자를 빨리 만들어 내어(create()), 구매..

디자인 패턴 - Builder (Creational Pattern)

Creational Pattern인 Builder Pattern에 대해 정리합니다. Builder는 전체를 만들기 위해 하나씩 부분부터 만들어 갑니다. Definition Builder는 Set of Objects의 생성 과정과, 만들어진 Set of Objects 의 표현 과정을 분리함. - Builder는 Director에 의해서 만들어지는 과정이 encapsulation 됨. - 만들어진 Set of Objects의 결과만 Client가 사용할 수 있도록 함. - Director는 Product가 만들어지는 step은 Builder를 통하여 알 수 있지만, Product가 어떻게 만들어지는지 detail은 모름. Builder는 만드는 부분 위주로 집중합니다. 목적 - 쉽게 교체 가능한 알고리즘을 ..

디자인 패턴 - Abstract Factory (Creational Pattern)

Creational Pattern인 Abstract Factory Pattern에 대해 정리합니다. Definition Abstract Factory 는 추상적인 공장에서 추상적인 부품을 조합해서 제품을 만드는 패턴입니다. 부품의 구체적인 구현에는 주목하지 않고 abstract class의 interface에 주목하여 부품을 조립합니다. Class Diagram factory package의 AbstractFactory는 AbstractProduct1, AbstractProduct2를 만듭니다. factory package의 내용을 바탕으로 concretefactory pacakage에서 구현을 실체화 합니다. Abstract Factory 및 Product의 형태 기반에서 비슷하지만 다양한 형태의 Fa..

디자인 패턴 - Factory Method (Creational Pattern)

Creational Pattern인 Factory Method Pattern에 대해 정리합니다. Factory naming 그대로 공장에서 같은 개체를 찍어 내는 패턴입니다. Definition Factory Method 는 instance를 생성하는 공장을 Template Method 패턴으로 구성한 패턴입니다. instance를 만드는 방법을 상위 class에서 결정하고, 구체적인 내용은 모두 하위 class에서 구현합니다. Class Diagram Creator 가 Product를 생성하는 역할을 합니다. Creator class는 Template Method 패턴으로 구현됩니다. Sample Case 다음은 Factory Method 패턴을 적용한 시나리오입니다. Scenario 이번에 우리 회사..

디자인 패턴 - Proxy (Structural Pattern)

Structural Pattern의 마지막인 Proxy Pattern에 대해 정리합니다. 대리인(proxy)을 사용하는 이유는 내가 아니라도 가능한 일을 맡기기 위해서입니다. 내가 해야만 하는 중요한 일은 내가 하고, 아닌 일은 대리인에게 맡기도록 합시다. Definition Proxy 는 heavy한 작업은 필요할 때 직접하고, 맡길 수 있는 일은 proxy를 통해 하는 패턴입니다. Proxy Pattern은 Structural Pattern에 해당합니다. (Structural Pattern은 이제 마지막이네요^^) Class Diagram Sample Case 다음은 Proxy 패턴을 적용한 시나리오입니다. Scenario 우리는 Database에서 Query를 실행시키려고 합니다. Database에..

디자인 패턴 - Flyweight (Structural Pattern)

Structural Pattern인 Flyweight Pattern에 대해 정리합니다. Flyweight는 Diet를 위해 군살을 빼듯이, 불필요한 객체 생성을 반복하지 않고, 최대한 쥐어짜서 있는 것을 사용하도록 합니다. Definition Flyweight 는 instance를 항상 만드는 것이 아니라, 이미 만들어진 인스턴스를 이용하는 패턴입니다. Flyweight Pattern은 Structural Pattern에 해당합니다. Class Diagram Sample Case 다음은 Flyweight 패턴을 적용한 시나리오입니다. Scenario 요즘 들어 예전 팝송이 생각이 나서 음악을 들어보던 중, 멜로디가 너무나 좋아 가사를 찾아보고 싶습니다. 우리가 만든 장치(MusicFactory)에 음악(..

디자인 패턴 - Facade (Structural Pattern)

Structural Pattern인 Facade Pattern에 대해 정리합니다. ※ facade는 프랑스어인 Façade를 어원으로 하는 '건물의 정면'이라는 의미입니다. Definition Facade 는 시스템 외부에 대해서는 단순한 인터페이스를 보여주는 패턴 Facade Pattern은 Structural Pattern에 해당합니다. Class Diagram Facade의 역할은 시스템을 구성하는 많은 역할에 대해 '창구' 역할을 합니다. ClassA, ClassB, ClassC 는 각기 저마다의 역할을 수행하지만 Facade의 역할은 신경쓰지 않습니다. Sample Case 다음은 Facade 패턴을 적용한 시나리오입니다. Scenario 우리는 이사를 하기로 하여 집(House)을 보러 갑니다..

반응형