intro to design patterns

Design patterns

가장 유명한 디자인 패턴으로는 GoF Design pattern이 있다. 하도 유명해서 필수로 알아두면 좋을 패턴들은 다음과 같다.

  • Relational diagram

Creational patterns

  1. Abstract factory pattern groups object factories that have a common theme.
  2. Builder pattern constructs complex objects by separating construction and representation.
  3. Factory method pattern creates objects without specifying the exact class to create.
  4. Prototype pattern creates objects by cloning an existing object.
  5. Singleton pattern restricts object creation for a class to only one instance.

Structural patterns

  1. Adapter allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.
  2. Bridge decouples an abstraction from its implementation so that the two can vary independently.
  3. Composite composes zero-or-more similar objects so that they can be manipulated as one object.
  4. Decorator dynamically adds/overrides behavior in an existing method of an object.
  5. Facade provides a simplified interface to a large body of code.
  6. Flyweight reduces the cost of creating and manipulating a large number of similar objects.
  7. Proxy provides a placeholder for another object to control access, reduce cost, and reduce complexity.

Behavioral patterns

  1. Chain of responsibility delegates commands to a chain of processing objects.
  2. Command creates objects which encapsulate actions and parameters.
  3. Interpreter implements a specialized language.
    Iterator accesses the elements of an object sequentially without exposing its underlying representation.
  4. Mediator allows loose coupling between classes by being the only class that has detailed knowledge of their methods.
  5. Memento provides the ability to restore an object to its previous state (undo).
  6. Observer is a publish/subscribe pattern which allows a number of observer objects to see an event.
    • ex) MVC : java.swing / [c#]winform
  7. State allows an object to alter its behavior when its internal state changes.
  8. Strategy allows one of a family of algorithms to be selected on-the-fly at runtime.
  9. Template method defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.
  10. Visitor separates an algorithm from an object structure by moving the hierarchy of methods into one object.

etc

  • Factory Pattern vs Builder patterns
    굉장히 비슷한 기능적인 설계 구조를 가지고 있는 두 가지 패턴이다. 둘 다 정형화된 class를 만드는 interface를 abstraction 시키는 데 매우 편리하게 사용되는 패턴이다. 다른 점이 있다면 만드는 product의 개수가 일반적으로 Factory는 n개, Builder는 1개로 한다는 점이다.

    Factory Pattern의 경우 n개의 method가 products의 각각 다른 리턴타입을 가질 수 있게 설계하는 것이 보통이다. 하지만, Builder의 경우에는 보통 1개의 method, construct() 만이 product를 리턴할 수 있게 설계하는 것이 일반적인 차이이다.

    Builder focuses on constructing a complex object step by step. Abstract Factory emphasizes a family of product objects (either simple or complex). Builder returns the product as a final step, but as far as the Abstract Factory is concerned, the product gets returned immediately.

    about htis in SOF

  • MVC design patterns

    MVC : Model, View, Controller의 앞글자를 딴 것을 의미며, 어플리케이션의 역할을 세 가지로 구분한 개발 방법론이다. 핵심은 사용자가 직접 Model을 만지지 않도록 하는 구조라고 볼 수 있다. 아래처럼 사용자가 Controller를 조작하면, Controller가 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 View를 통해서 사용자에게 정보를 제공하는 구조이다.

    추가로 비슷한 디자인 패턴 구조로는 MVP (Model, View, Presenter), MVVM (Model, View, View Model)가 있다. 두 모델은 View와 Model을 분리해 주는 장점을 가지고 있다. MVVM에서는 View가 보는 Data는 Model의 원래 정보가 아닌 View Model을 통해 간접적으로 얻는 Data이며, event를 통해서 view model의 변화를 Control하는 특징이 있다.

    GoF 패턴의 Observer 패턴과 연관성이 매우 크다. 객체의 상태변화, event, call-back function 등의 특성이 observer 패턴의 핵심 구성요소이기 때문이다.

MVC, MVP, MVVM 차이점

Design pattern examples from non-program

Design patterns

Design patterns in source making

UML Class diagram & Source code mapping

Share Comments