본문 바로가기

Development/ETC

[Design Pattern : 1부] Design Pattern 은 건축에서 시작되었다

Introduction

안녕하세요? 앞으로 디자인패턴(DesignPattern)에 대해서 연재를 시작할 위트의 언더입니다.

여러분들은 어떠신가요?
디자인패턴에 대해서 얼마나 알고 계신가요? 알고있는 패턴은 얼마나 되나요?

 제가 처음 이것에 대해서 듣고 공부한때가 21살, 대학 2학년 나름 풋풋했던 때인것으로 기억합니다. 하지만 지금 기억나는 패턴은 몇 가지 되지 않고, 또한 실제로 활용하는 패턴은 그 보다 적은 수 인것 같습니다. 사실 패턴이라는 것이 개발하면서 관습적으로 자연스레 만들어진 것이기 때문에, "이것을 적용해서 개발을 하느냐" 라는 질문 자체가 우습긴 합니다. 패턴을 적용하지 않고 개발을 했다고 해도, 그것은 GoF(Gang of Four)가 정리한 패턴이 아닐 뿐이지, 나름 자신만의 패턴이 될 수 있으니까요. 그렇다고 해서 패턴이 중요하지 않다는 이야기는 아닙니다. GoF가 정리한 패턴은 오랜 기간동안 소프트웨어 공학의 역사에서 문제해결에 뛰어나다고 검증된 것들이기 때문입니다.

 참, 우리가 흔히 말하는 디자인패턴은 GoF가 만든것이 아니라, 개발에 있어서 문제 해결방식(패턴)을 정리했을 뿐 입니다. 다시말해, 오래전부터 사람들이 어떤 형태(패턴)의 문제를 해결하기 위해서 사용했던 방법을 체계화 했다는 말입니다.

 더불어 사견입니다만, 저는 개발자에게 정말 중요한것은 디자인패턴, 리팩토링, TDD, XP 와 같은 방법론이라고 생각합니다. 아무렇게나 프로그램이 돌아가도록 만드는 것은 '프로그래밍 언어'를 아는 사람이라면 누구나 만들 수 있습니다. 프로와 아마추어의 차이는 앞서 언급한 것들에서 온다고 생각합니다. 대규모 프로젝트에서 정말 중요한 것은 구현이 아니라 유지보수이기 때문입니다.



DesignPattern의 시작

디자인 패턴은 본래 건축학에서 쓰이는 용어였답니다. 건축가인 '크리스토퍼 알렉산더'가 건축의 여러가지 기법을 패턴으로 정리한데서 비롯되었지요. 당시 건축학에서는 큰 인기를 얻지 못하고, 컴퓨터 공학에서 이 방식을 도입하기 시작했습니다. 이를 구체화 시키고 체계화 시킨 사람이 에릭감마, 리차드 헬름, 랄프 존슨, 존 블리시디스. 즉 GoF(Gang of Four)입니다.
이들은 패턴을 23가지로 정리하고, 생성, 구조, 행위 3가지로 분류하였습니다.

패턴의 종류

생성패턴(creational)
Abstract Factory
Builder
Factory Method
Prototype
Singleton

구조패턴(Structual)
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

행위패턴(Behavioral)
Chain of Resp
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor


앞으로 위 패턴들을 중심으로 구조를 알아보는 시간을 갖도록 하겠습니다.