본문 바로가기

GoF의 디자인 패턴/1. 서론

1.1 디자인 패턴이란?

           디자인 패턴 : 기존 환경내에서 반복적로 일어나는 문제들을 설명하고, 그 문제들에 대한 해법의 핵심을 설명한다.

                     이 해법을 100만 번 이상이라도 재사용할 수 있어야 한다.

          

하나의 '패턴'에는 4가지 요소가 반드시 들어있다.

           1. 패턴 이름(pattern name) : 한 두 단어로 설계 문제와 해법을 서술한다.

                     a. 패턴에 이름을 부여하는 것 = 설계를 추상화 = 설계의 의도를 표현 = 설계에 대해 생각을 쉽게 한다 = 개발자들 간 의사소통이 원활

 

           2. 문제(problem) : 언제 패턴을 사용하는가를 서술

                     a. 해결해야 할 문제와 그 배경(환경)을 설명

 

           3. 해법(solution)

                     a. 설계를 구성하는 요소

                     b. 요소들 간의 관계

                     c. 요소들 간의 책임

                     d. 요소들 간의 협력

                     e. 다만, 구체적인 설계, 구현등이 아니라 추상적인 설명, 클래스 또는 객체들의 나열 방법을 제공한다.

 

           4. 결과(consequence) : 이 디자인 패턴을 적용하여 얻는 결과 및 장단점을 서술한다.

                     a. 어떤 설계를 결정할 때, 또는 비용을 측정할 때 고려해야 할 가장 중요한 부분이다.

                     b. 시간이 중요한지, 공간이 중요한지에 따라 다른 설계 방법을 선택해야 한다.

                     c. 사용하는 언어가 무엇인지도 코드의 재사용 또는 이식성, 확장성 등을 고려할 때 중요한다.

 

 

이 책에서 이야기하는 디자인 패턴

           특정한 전후 관계에서 일반적 설계 문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명

 

           1. 유용한 공통의 설계구조에서 주요 요소들을 식별하고 이들에게 이름을 부여(추상화)

           2. 패턴에 참여하는 클래스와 그들의 인스턴스를 식별하고

                     a. 역할, 협력 관계 정의

                     b. 책임 할당

           3. 언제 패턴을 적용할지, 다른 설계 제약을 고려하여 패턴을 적용할 수 있는지, 패턴을 사용하였을 때의 결과를 설명