Elemental Design Patterns : 객체지향과 디자인 패턴의 연결 고리
디자인 패턴은 기술인가, 과학인가?
디자인 패턴을 소프트웨어 공학의 구성요소로 볼 수 있는가? 이 분야에 패턴이 적합한지 판단할 수 있는가? 각 패턴이 얼마나 서로 어울리는지 장담할 수 있는가? 패턴은 가져다 쓰기만 하면 되는 냉동식품인가?
패턴을 종합적인 방법으로 접근할 수 없다면 우리는 이에 대한 답을 내릴 수 없다. 엘리멘틀 디자인 패턴은 패턴을 네 가지 카테고리로 나누며, 패턴을 종합적인 관점에서 볼 수 있는 도구를 제공한다.
- 저자 : 제이슨 맥컴 스미스
- 번역 : 김지원
- 출간 : 2013-05-02
처음 접했을때 "흔한" 디자인 패턴 관련 책인가 싶었다. 다양한 디자인 패턴을 소개하는 정도일 것이라고 생각 했다.
그러나, 곧 생각은 바뀌게 되었다. 디자인 패턴을 다른 관점으로 보는 방법을 소개하고, 그 관점으로 디자인 패턴을 소개 한다. 구글링을 해보니 이 새로운 관점은 오래전에 발생되었던것 같다. 해외 개발자 커뮤니티에서 관심을 가지지 않는 내 자신에 대해, 그리고 이제서야 이 책이 번역되서 나오고 이제서야 읽게 되는 것인지 후회스럽다.
초반에 Elemental Design Patterns (이하 EDP) 에 대한 소개로 부터 시작하는데, EDP는 단지 책 제목이 아니다. 디자인 패턴을 새롭게 바라보는 관점에 대한 이름이다.
이 책 EDP는 원소 수준에서 디자인 패턴을 보는 방법을 알려 준다. 그리고 그 원소들이 결합된 아미노산 수준에서, 아미노산들이 결합하여 단백질의 수준에서 디자인패턴을 보는 방법도 알려 준다.
디자인 패턴을 새로운 관점으로 볼 수 있게 되니 내가 작성한 코드에서 사용된 디자인 패턴들의 장단점들이 보이고 더 나은 패턴들을 적용할 수 있게 되었다.
프로젝트 초기에 2주 이상 걸릴 것이라고 포기했던 디자인 패턴들을 새로운 관점으로 적용해 보았다. 2일 정도밖에 걸리지 않았다. 지레 겁을 먹었던 것이다. 중복 코드들의 증가의 위협으로 인해 더 이상 "날림" 디자인을 유지할 수 없었던 까닭이기도 하였다.
이 책은 다른 디자인 패턴 책에 비해 읽기가 어렵다. 새로운 관점을 요구하기 때문이다. 그래서 몇개의 챕터는 3번 정도를 읽고 나서야 내 머리에 각인이 가능 하였다.
책이 어려웠던만큼 이 책을 어떻게 소개해야 하는지도 역시 어렵게 느껴진다.
(소개 순서는 챕터의 순서와 관계 없다)
먼저, 디자인 패턴에 대한 기존 개발자간에 형성된 집단적 오해나 미신에 대한 근거를 제시하고, 이를 바꿀 것을 요구한다.
두번째, 소스 코드나 UML을 통해 디자인 패턴을 발견, 분류, 분해 하는 방법을 알려준다.
세번째, Pattern Instance Notation (PIN)을 소개하고, 디자인 패턴에 대한 모델화를 통해 분석하는 방법을 알려 준다.
네번째, EDP를 통해 디자인 패턴을 리팩토링하고 코드에 적용하는 방법을 소개 한다.
다섯번째, EDP 카탈로그에서 EDP의 방법으로 예시, 개선점, 패턴간의 비교, 장단점, 소스 코드, 다이어그램들을 통해 디자인 패턴, 중간 합성 패턴, GoF 합성 패턴들을 소개한다.
일곱번째, EDP의 이론적 토대가 되는 Rho p-calculus를 소개와 함께 PIN + UML을 통해 소개된 디자인 패턴에 대한 공식을 소개한다.
사람의 지능은 10살 정도이면 완성이 된다고 한다. 그러나 나이를 먹어감에 따라 역량에 차이가 커져가는 것은 그 사람의 경험이 영향을 주는 것이라고 한다. 책을 읽는 것도 하나의 경험이다. 좋은 경험을 가질 수 있는 기회를 준 한빛미디어에 감사 드린다.
이 책을 코딩과 설계를 "더" 잘하고 싶은 모든 개발자들에게 권한다. 이미 다른 책을 통해 디자인 패턴 을 공부 하였더라도! 복습도 하며 새로운 관점을 가지게 된다.