Wednesday, December 27, 2006
GoF의 Design Patterns
Object Oriented Software Design에 종사하는 사람이면 반드시 한번은 읽어야 할 고전이다.
이 책은 Object Oriented Design에 대한 혁신적인 디자인 방법론이나, 새로운 기법들을 논하지
않는다. 그보다는 개발자들이 축적한 경험에 기반하고 있다. 저자들의 주장은 간단하다.
소프트웨어 설계를 하다 보면, 같은 문제가 수없이 반복되는 것을 관찰할 수 있는데, 이것들에 대한
논의나 기록이 부족했다는 것이다. 같은 문제가 계속해서 반복된다면 표준화된 해결책을 만들어
놓고, 그 문제가 발생할 때마다 표준화된 해결책을 쓰면 소프트웨어 설계가 훨씬 쉬울 것이라는
것이다. 마치 건축을 할 때 건축 자재들을 정해진 규칙에 따라 조립하듯이, 소프트웨어도 이러한
표준화된 방법론을 이용하여 레고 블록 쌓듯이 조립하자는 뜻이다.
저자들은 이 표준화된 방법을 Design Pattern이라고 이름하였으며, 가장 흔하게 부딪치는 문제에
대한 Design Pattern들을 체계적으로 정리하여 책의 후반부에 수록하여 놓았다. (이 책의 가장 큰
강점이다).
Design Pattern은 3가지 요소로 정의할 수 있다. 일단 그것이 어떤 문제에 사용되는 것인가
를 기술해야 하므로 "Problem"이 첫번째 요소이다. 그리고 그 문제에 대한 해결책 "Solution"이 두
번째이다. 마지막 요소는 그 문제에 어떤 해결책을 적용했을 때 나타나는 결과, "Consequence" 이
다. 같은 문제에 대해 여러가지 해결책이 존재할 수 있으므로, 결과들을 비교하여 어떤 솔루션을
선택하는 것이 좋을지 결정해야 한다.
이 책은 크게 2개의 부분으로 나누어져 있다. 첫번째 파트 (Chapter 1/2)는 Design Pattern이란
무엇이고, 그것들을 어떻게 사용해야 하는가를 설명한다. 그리고 두번째 파트 (Chapter 3/4/5)는
광범위하게 사용되는 Design Pattern들을 Creational, Structural, Behavioural이라는 기준으로
분류하여 소개해 놓았다.
소프트웨어 설계 전문가를 꿈꾸는 엔지니어라면 반드시 한 번 읽어보아야 할 책이다.