본문 바로가기

: Desgin Pattern

Design Pattern

반응형

Design Pattern Introduction

Table of Contents




1. What is Design Pattern?

건축학의 개념을 차용하였다. 건축학에서는 도시 계획이나 건물 디자인 절차에 대해서 연구했다.
그리고 전문가들은 자주 발생하는 문제들, 그리고 그것을 해결하기 위한 방법들을 정리하였다.
이는 프로그래밍에서도 똑같이 적용할 수 있다. 그리고 자주 발생하는 문제들에 대해서는 이미 누군가는 겪었던 문제들이다.
디자인패턴은 문제들을 정형화해둔 솔루션같은 개념이다.

 

2. Why do we use patterns?

특정 문제 해결에 도움되는 이미 증명된 솔루션들을 재사용할 수 있다.
잘 만들어진 디자인은 생산성을 늘리고, 변화에 대해서 유연하게 대응할 수 있다.
클라이언트는 물리적 의존성을 구현하지않은 틀만 보고 동작 시나리오를 구성할 수 있다.
구조 설계 시 관계자들 간 커뮤니케이션을 효율적으로 만든다.
❗️지금 고민하는 당신의 문제는 누군가는 이미 해결했을 수 있다!❗️

 

3. Part Rule of Design Pattern

좀 긴 한문장이다.

each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution.
각 패턴은 3가지 룰을 가지고있다. 그 룰은 context, problem, solution 간 관계를 나타내는 것이다.

그리고 이 관계는 이렇게 해석할 수 있다.

A pattern is a proven solution to a problem in a context.
패턴은 context 안에서 problem 해결을 위한 검증된 solution 이다.

 

4. Category of GoF Patterns

GoF (Gang of Four) 패턴은 GoF의 4인방(Erich Gamma, Richard Helm, Ralph Johnson, John Vissides)이 최초로 23가지 디자인 패턴을 구체화 하였다.
소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴이다.
생성패턴 5가지, 구조 패턴 7가지, 행위 패턴 11가지로 분류되어진다.
아래는 이 세 가지 카테고리를 분류한 표와 간단한 설명이다.

3가지 패턴 카테고리로 분류된다.

  • Creational
    동작과 사용으로부터 생성을 분리한다.
  • Structural
    상속관계를 클래스들을 Object-Oriented구조로 구성한다.
  • Behavioral
    정적 관계와 클래스간 소통 패턴을 구성한다.

 

5. Levels of Patterns [POSA]

Pattern-Oriented Software Architecture(POSA)
소프트웨어 아키텍쳐를 위한 패턴

  • Architectural Pattern
    • 시스템 전반의 골격을 정의
  • Design Pattern
    • 서브시스템 컴포넌트와 그 관계를 가공한다(refine).
    • 전체 시스템에 영향을 끼치지 않는다.
    • 언어와 패러다임에 독립적이다.
    • 마이크로 아키텍쳐 패턴이라고도 한다.
  • Coding Pattern (idiom)
    • 특정 프로그래밍 언어에 종속된다. 구체적인 구현 방법을 기술한다.

 

6. MVC Pattern

굉장히 유명한 패턴인 MVC 패턴을 통해서 간략히
Architectural Pattern - Desgin Pattern 관계에 대해서 알아보자.

MVC

MVC(Model - Vew - Controller)는 아키텍쳐 패턴이다.
MVC에는 다양한 디자인 패턴이 적용되어 있고, 사용자에 따라 추가적인 패턴이 더 적용될 수 있지만,
여기서는 세 가지 대표적 패턴들에 대해서만 얘기하고 넘어가도록 하겠다.

  • Strategy pattern
    controller 가 다양한 view를 사용하기 위해 적용
  • Observer pattern
    view - model 사이의 결합을 느슨하게 하기 위해 적용
  • Composite pattern
    컴포넌트를 위한 user interface 구현을 위해 적용

여기까지 POSA의 관점에서 설명이었고, 보다 자세한 설명은 아래 링크에서 이어가도록 하겠다. [MVC Pattern]

References)
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://www.startertutorials.com/patterns/organizing-catalog.html

반응형

': Desgin Pattern' 카테고리의 다른 글

MVC  (0) 2021.08.19
Composite Pattern  (0) 2021.07.25
Adapter Pattern  (0) 2021.07.25