코딩으로 학습하는 GoF의 디자인 패턴
Last updated
Last updated
'객체지향의 사실과 오해'에서 디자인 패턴에 관해 아래와 같이 언급하고있다.
일반적으로 디자인 패턴은 반복적으로 발생하는 문제와 그 문제에 대한 해법의 쌍으로 정의 된다. 패턴은 해결하려고 하는 문제가 무엇인지를 명확하게 서술하고, 패턴을 적용할 수 있는 상황과 적용할 수 없는 상황을 함께 설명한다. 패턴은 반복해서 일어나는 특정한 상황에서 어떤 설계가 왜 더 효과적인지에 대한 이유을 설명한다.
디자인 패턴은 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿이다. 디자인 패턴은 책임-주도 설계의 결과물인 동시에 지름길이다.
디자인 패턴은 막상 학습 할때는 재미가 있는데, 실무에서 이를 적용할 때 적절한 패턴이 잘 생각이 안나는 경우가 많은 것 같다. 아무래도 일단 내가 깊이 있게 내재화한 패턴의 수가 적고, 알고 있는 패턴들에 대해서도 이해도가 부족해서 그럴 수 있는 것 같다. 하지만 가장 큰 이유로는 '어떤 패턴은 어떤 것이다' 라는 식으로 학습을 했기 때문이 아닐까 싶다.
다르게 말하면 '어떤 상황에서는 이런 패턴이 최적의 설계이다.' 라는 식으로 특정 상황에 대한 솔루션의 형태로 패턴을 내재화하지 않아서 그런 것 같기도 하다. 그런 의미에서 위 문구들이 참 와닿았었다.
이번에 패턴을 하나씩 다시 학습하면서는 위와 같은 관점으로 패턴을 익히고 학습을 할 예정이다. 그래서 모든 패턴에 대해서 정리 양식을 통일해서 하는 것이 좋을 것 같다. 강의에서는 패턴을 생성, 구조, 행동 이렇게 세 카테고리로 분류해서 설명하고 있는데 이러한 분류와 함께 문제-해법의 쌍을 그대로 드러낼 수 있는 양식이 좋을 것 같다.
지금으로서는 대분류(객체생성, 구조, 행동), 문제상황, 해결방안 이렇게 세 가지 항목을 기준으로 정리하는 것이 좋을 것 같다는 생각이 든다.
실습 코드는 각 정리 노트에도 첨부할 예정이지만 일단 여기에도 링크를 남긴다.