사실 디자인 패턴은 대략 1990년대 건축분야에서 먼저 시도한 내용이며 건축가 크리스토퍼 알렉산더는 아래와 같이 정의했다.
각 패턴은 우리 주변에서 자주 반복해서 발생하는 문제와 그 문제를 해결하는 핵심을 기술해 동일한 일을 두 번 다시 하지 않고 해결할 수 있도록 한다.
적절한 격언으로써 "Don't reinvent the wheel"는 말을 예로 들을 수 있는데 굳이 스스로 해결하지 말고 해당 상황에 대해 이미 널리알려진 적절한 패턴을 도입해서 구조적인 취약점을 해결하라는 뜻으로 받아들일 수 있다.
디자인 패턴의 요소
- Context : 상황, 패턴이 적용될 수 있는 상황
- Problem : 문제, 해결될 필요가 있는 디자인 이슈
- Solution : 해결, 문제를 해결할 수 있는 설계, 구현 방법이나 언어에 의존하지 않음
만약 개발자간의 상세 설계를 말로 대화하려고 하면 상호간에 이해나 생각이 다를 수 있다. 따라서 디자인 패턴을 이해하고 그것을 사용해 의사 소통하면 좀 더 명확하게 이해할 수 있으므로 생산성이 더욱 향상된다.
용어
- 아키텍처 패턴 : 시스템을 구성하는 컴포넌트의 구성과 컴포넌트간 협조 방법을 패턴화, 레이어 패턴, 파이프&필터, 브로커 패턴이 대표적
- 디자인 패턴 : 컴포넌트 내부의 클래스/객체의 구조와 협업 방법을 패턴화
- 관용구 : 프로그램 언어 특유의 패턴, 자용하는 기술 방법 등
GOF 디자인 패턴
GOF는 Gang of Four의 약자로서 4명의 소프트웨어 개발자가 주로 사용하는 디자인 패턴에 대해서 정리한 것을 의미한다. 패턴을 3가지로 분류하고 총 23개의 디자인 패턴을 소개하는대 그 상세 내용은 아래와 같다.
패턴의 분류
- 생성 패턴
- 추상 팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리 메서드(Factory Method)
- 프로토 타입(Prototype)
- 싱글턴(Singleton)
- 구조 패턴
- 어댑터(Adapter)
- 컴포지트(Composite)
- 데커레이터(Decorator)
- 퍼사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
- 행위 패턴
- 책임 연쇄(Chain of Responsibility)
- 커맨드(Command)
- 인터프리터(Interpreter)
- 이터레이터(iterator)
- 미디에이터(Mediator)
- 메멘토(Memento)
- 옵저버(Observer)
- 스트래티지(Strategy)
- 템플릿 메서드(Template Method)
- 비지터(Visitor)
읽기 좋은 글귀
'소프트웨어 > 디자인패턴' 카테고리의 다른 글
[소프트웨어/디자인패턴] 템플릿 메서드 패턴(Template Method Pattern) (0) | 2017.01.26 |
---|---|
[소프트웨어/디자인패턴] 데커레이터 패턴(Decorator Pattern) (0) | 2017.01.25 |
[소프트웨어/디자인패턴] 옵저버 패턴(Observer Pattern) (0) | 2017.01.23 |
[소프트웨어/디자인패턴] 커맨드 패턴(Command Pattern) (2) | 2017.01.21 |
[소프트웨어/디자인패턴] 스테이트 패턴(State Pattern) (0) | 2017.01.19 |