1. "디자인 패턴"이란?
"디자인 패턴"이라는 개념은 사실 소프트웨어에서 처음 생겨난 것이 아닙니다.
바로, 건축의 영역에서 등장한 개념이었죠.
엥? 건축이랑 소프트웨어랑 무슨 관계가 있길래 영향을 받은 거죠?
건축과 소프트웨어, 단순히 단어만 들으면 무슨 상관이 있는지 이해가 안 가실 수도 있습니다.
하지만, 곰곰이 생각해보면 건축과 소프트웨어 개발은 닮은 점이 무척 많습니다.
고객의 요구사항을 파악하고, 이를 토대로 설계하고, 설계한 대로 프로젝트를 진행한다.
아니, 거의 같다고 해도 무방할 것 같습니다. 하지만, 여기서 큰 차이점이라고 함은
소프트웨어는 언제든 기능을 수정, 추가할 수 있는 반면에 건물은 짓고 나면 건드리기가 참 힘든 정도겠네요.
디자인 패턴은 "어떠한 설계 문제 상황에는 ~패턴이 좋다"라는 사실을 수많은 전문가들의 경험을 통해 얻어진 산물입니다.
이미 앞서 전문가분들이 겪은 산전수전을 우리들이 또 겪을 필요는 없습니다. 우리들의 시간은 소중하니까요.
디자인 패턴을 통해 우리의 소프트웨어 설계에 재사용성을 더하고, 보다 나은 객체지향적 설계를 할 수가 있습니다.
그렇게 되면 향후 개발에 있어 불필요한 비용은 줄이고, 좀 더 단순하고 쉽게 코드를 작성해 나갈 수 있을 것입니다.
2. 디자인 패턴의 구성요소
그렇다면 디자인 패턴은 어떻게 이루어져 있을까요?
한 디자인 패턴은 일반적으로 4개의 구성요소가 들어있습니다.
- 패턴 이름
- 디자인 패턴의 이름을 정의합니다. 이름은 보통 해당 디자인 패턴의 역할을 뜻 할 정도로 직관적입니다.
- 문제
- 언제 이 디자인 패턴을 사용하는지 문제 상황, 이유를 서술합니다.
- 해법
- 제기된 문제 상황에 맞는 클래스, 인터페이스 설계를 제공합니다.
- 결과
- 해당 디자인 패턴을 적용함으로써 얻는 장단점을 서술합니다.
이상으로 본 디자인 패턴 각각을 설명하기에 앞서 간단한 포스팅을 해봤습니다.
읽어주셔서 감사합니다.