1. 디자인패턴이란? ¶
디자인패턴에 대한 설명이라.. 다른 곳에서 이미 체계적인 설명들을 해 놓아서 장황하게 설명하지 않는다고 한다면, 말 그대로 '패턴'이 된 디자인들의 묶음입니다. (물론 그렇다고 패턴이 모든 디자인 문제를 해결해주는 silver bullet는 아니죠.) 처음 프로그램을 설계를 할때 참조할 수 있는, 어느정도 공식화 된 디자인들을 일컫습니다. 현재 거의 Reference화 된 23개의 패턴이 있고요. 계속 새로운 패턴이 추가되고 있는 것으로 알고 있습니다.
2. 디자인패턴을 공부하는 이유 ¶
디자인 패턴을 적용함으로서 얻을 수 있는 장점으로는 '확장성'과 '유연성'을 들 수 있습니다. 그리고 초기 프로그램 설계시에 지침서가 되어주지요. OOP 의 개념을 익히고 나서 어떻게 OOP를 추구해나가야 할지 감을 못잡는 사람은 공부해보는 것만으로도 좋은 경험이 된다고 생각합니다.
그리고 한편으로는 Refactoring을 위한 방법이 됩니다. Refactoring은 OnceAndOnlyOnce를 추구합니다. 즉, 특정 코드가 중복이 되는 것을 가급적 배제합니다. 그러한 점에서 Refactoring을 위해 DesignPattern을 적용할 수 있습니다. 하지만, Refactoring 의 궁극적 목표가 DesignPattern 은 아닙니다.
그리고 디자인패턴이 하나의 설계언어가 되지요. '이클래스를 어떻게 연결하고 이 부분은 어떻게 구성하고...' 를 '~패턴으로 구현하고' 라는 한마디로 줄일 수도 있죠. (단, 이정도가 진행되려면 거의 PM쯤이 아닐까 하는..)
DesignPatterns 의 WhatToExpectFromDesignPatterns 를 참조하는 것도 좋겠네요.
그리고 한편으로는 Refactoring을 위한 방법이 됩니다. Refactoring은 OnceAndOnlyOnce를 추구합니다. 즉, 특정 코드가 중복이 되는 것을 가급적 배제합니다. 그러한 점에서 Refactoring을 위해 DesignPattern을 적용할 수 있습니다. 하지만, Refactoring 의 궁극적 목표가 DesignPattern 은 아닙니다.
그리고 디자인패턴이 하나의 설계언어가 되지요. '이클래스를 어떻게 연결하고 이 부분은 어떻게 구성하고...' 를 '~패턴으로 구현하고' 라는 한마디로 줄일 수도 있죠. (단, 이정도가 진행되려면 거의 PM쯤이 아닐까 하는..)
DesignPatterns 의 WhatToExpectFromDesignPatterns 를 참조하는 것도 좋겠네요.
5. 관련 페이지 ¶
- KDPProject
- http://www.econ.kuleuven.ac.be/tew/academic/infosys/Members/Snoeck/litmus2.ps - Design Patterns As Litmus Paper To Test The Strength Of Object Oriented Methods
- DeadLink