디자인 패턴을 적용함으로서 얻을 수 있는 장점으로는 '확장성'과 '유연성'을 들 수 있습니다. 그리고 초기 프로그램 설계시에 지침서가 되어주지요. OOP 의 개념을 익히고 나서 어떻게 OOP를 추구해나가야 할지 감을 못잡는 사람은 공부해보는 것만으로도 좋은 경험이 된다고 생각합니다.
그리고 한편으로는 Refactoring을 위한 방법이 됩니다. Refactoring은
OnceAndOnlyOnce를 추구합니다. 즉, 특정 코드가 중복이 되는 것을 가급적 배제합니다. 그러한 점에서 Refactoring을 위해
DesignPattern을 적용할 수 있습니다. 하지만, Refactoring 의 궁극적 목표가
DesignPattern 은 아닙니다.
그리고 디자인패턴이 하나의 설계언어가 되지요. '이클래스를 어떻게 연결하고 이 부분은 어떻게 구성하고...' 를 '~패턴으로 구현하고' 라는 한마디로 줄일 수도 있죠. (단, 이정도가 진행되려면 거의 PM쯤이 아닐까 하는..)
DesignPatterns 의
WhatToExpectFromDesignPatterns 를 참조하는 것도 좋겠네요.