Architecture (아키텍쳐)/DesignPattern

디자인 패턴 이란?

jw92 2021. 4. 25. 14:09

패턴이란?

디자인 패턴을 보기 이전에 "패턴"이란 것에 대해 알아야 합니다.

패턴이란

"특정 상황(Context)에서 자주 반복되는 비슷한 문제(Problem)에 대한 해결책(Solution)" 을 정의한 것입니다.

영어로는 다음과 같은 정의가 널리 쓰입니다. "A solution to a problem in a context"

왜 이러한 패턴을 사용할까요?

객체지향 프로그래밍은 어렵습니다. 재사용이 가능한 객체지향 프로그래밍은 훨씬 더 어렵습니다.

- 경험이 많은 디자이너는 과거에 사용했던 좋은 해결책을 재사용합니다.

- 잘 설계된 객체지향 시스템은 패턴을 활용합니다.

- 디자이너가 패턴에 대해 이해하고 있으면 생산성이 올라가며 유연하고 재사용이 가능한 결과가 나옵니다.

- 다른 개발자와의 커뮤니케이션을 유용하게 합니다.

- 누군가는 이미 당신이 고민하는 문제를 해결했을 겁니다! 당신은 그 해결책을 사용하기만 하면 됩니다!!!

 

 

패턴의 종류

Architecture Pattern: 기본 구조(Fundamental Structure)의 구성 혹은 도안

대표적인 예로 MVC 패턴이 있습니다.

Design Pattern: Subsystems, Components 혹은 이것들의 Realtionships을 정의하는 것입니다.

이 디자인 패턴은 전체적인 시스템에 영향을 미치지 않습니다.

하지만 Micro-architecture 등 에서는 Subsystem이나 Component를 정의할 수 있습니다.

 

Coding Pattern (혹은 programming idiom): Programming Language 수준에서 적용하는 low-level 패턴 입니다.

Counter를 사용한다 등의 예가 있습니다.

 

이 곳에서는 디자인 패턴에 대해 알아보도록 하겠습니다.

 

 

디자인 패턴의 구성

모든 디자인 패턴은 3개의 부분을 가집니다.

1. Cotext: 패턴을 적용할 상태. 단 되풀이되는 상태여야 합니다.

2. Problem: Context에서 당신이 달성하고 싶지만, 어떠한 제약사항이 존재하는, 목적.

3. Solutin: 특정 목적과 제약사항을 달성하기 위한 일반적인 디자인.

 

Iterator 패턴을 예를 보 아래와 같이 구성됩니다.

Context: Objects의 Collection을 가지고 있다.

Problem: Collection의 구현을 밖으로 드러내지 않고 Object들을 처리하고 싶다.

Solution: 별도의 Class에 Iteration을 Encapsulation 한다.

 

디자인 패턴에는 어떠한 것들이 있을까요?

일반적으로 우리에게 알려져 있고 사용하는 디자인 패턴은 GoF Pattern입니다.

이 GoF 패턴은 다음 장에서 살펴보도록 하겠습니다.

2021.04.25 - [Architecture (아키텍쳐)/DesignPattern] - Gang of Four (Gof) 디자인 패턴