[오브젝트] 15장_디자인 패턴과 프레임워크
디자인 패턴
특정한 변경을 일관성있게 다룰 수 있는 협력 텝플릿 제공한다.
설계를 재사용하는 것이 목적이다.프레임워크
특정한 변경을 일관성 있게 다룰 수 있는 확장 가능한 코드 템플릿을 제공한다.
설계와 코드를 함께 재사용하기 위한 것이 목적이다.
디자인 패턴과 설계 재사용
소프트웨어 패턴
패턴의 특징은,
- 반복적으로 발생하는 문제와 해법의 쌍으로 정의된다.
- 이미 알려진 문제와 이에 대한 해법을 문서로 정리할 수 있고, 다른 사람과 의사소통 가능하다.
- 추상적인 원칙과 실제 코드 작성 사이의 간극을 메워준다. 실질적인 코드 작성을 돕는다.
- 패턴은 실무에서 탄생했다.
마틴 파울러에 의하면, 패턴은 하나의 실무 컨텍스트에서 유용하게 사용해왔고 다른 실무 컨텍스트에도 유용할 것이라고 예상되는 아이디어다.
프로젝트 조직을 구성하는 방법, 프로젝트 일정을 추정하는 방법 등 반복적인 규칙을 발견할 수 있는 모든 영역이 패턴의 대상이다.
패턴 분류
디자인 패턴
일반적인 설계 문제를 해결한다.
협력하는 컴포넌트들 사이에서 반복적으로 발생하는 구조를 서술한다.아키텍쳐 패턴
디자인 패턴의 상위에 있다.
소프트웨어의 전체적인 구조를 결정한다.이디엄
디자인 패턴의 하위에 있다.
특정 프로그래밍 언어에만 국한된 하위 레벨 패턴이다.
예를 들어, C++ 의 COUNT POINT 이디엄은 자바에서는 유용하지 않다.분석 패턴
도메인 내의 개념적인 문제를 해결한다.
패턴과 책임-주도 설계
객체지향 설계에서 중요한 일을 다시 정리해보자.
바로, 올바른 책임을 올바른 객체에게 할당하고 객체 간의 유연한 협력 관계를 구축하는 것이다.