본문 바로가기

꼬꼬무

디자인 패턴

패턴은 반복적으로 발생하는 문제와 해법으로 정의된다.

따라서 패턴은 지식 전달과 커뮤네키이션 수단으로 활용할 수 있다.

 

패턴의 범위는 소프트웨어의 분석, 설계, 구현의 영역만으로 한정된 것이 아니라 프로젝트 조직을 구성하는 방법, 프로젝트 일정을 추정하는 방법, 요구사항을 관리하는 방법과 같이 반복적인 규칙을 발견할 수 있는 모든 영역이다.

 

패턴의 범위나 적용 단계에 따라 아키텍처 패턴, 분석 패턴, 디자인 패턴, 이디엄 4가지로 분류된다.

이 중 가장 널리 알려진 디자인 패턴은 특정한 설계 문제를 해결하는 것을 목적으로 한다.

 

객체지향 설계에서 가장 중요한 일은 올바른 책임을 올바른 객체에게 할당하고 객체 간의 유연한 협력을 구축하는 것이다.

책임과 협력은 캡슐화, 크기, 의존성, 유연성, 성능, 확장 가능성, 재 사용성 등의 다양한 요소들의 트레이드오프를 통해 결정 된다.

 

대부분의 경우에 훌륭한 품질의 설계를 얻기 위해 많은 시간과 노력을 기울여야 한다.

적절하게 패턴을 이용하면 공통적으로 발견되는 설계 이슈를 해결할 수 있다.

 

그러나 패턴은 목표로 하는 설계에 이를 수 있는 방향을 제시하는 나침반의 역할에 불과하다.

문제 해결보다 패턴이 제시하는 구조를 맹목적으로 따르다보면 불필요하게 복잡하고 난해한 시스템을 낳을 수 있다.

따라서 패턴 만능중의에 빠져 맹목적으로 디자인 패턴에 의지하기보다 현재의 요구사항, 적용 기술, 프레임워크에 맞게 활용해야 한다.

 

 

 

참고 : 오브젝트 : 코드로 이해하는 객체지향 설계