올바른 책임 할당을 위한 GRASP패턴
GRASP패턴은 “General Responsibility Assignment Softwarre Pattern(일반적인 책임 할당을 위한 소프트웨어 패턴)”의 약자로 객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들의 집합을 패턴 형식으로 정리한 것이다.
1. 도메인 개념에서 출발하기
- 설계를 시작하기 전에 도메인에 대한 개략적인 모습을 그려 보는 것이 유용
- 도메인 개념이란 책임 할당의 대상으로 사용하는 거대한 틀
- 설계를 시작하는 단계에서는 개념들의 의미와 관계가 정확하거나 완벽할 필요가 없다.
- 중요한 것은 완벽한 설계가 아닌 설계를 시작하는 것!
2. 정보 전문가(INFORMATION EXPERT) 패턴
INFORMATION EXPERT 패턴 즉, 정보 전문가 패턴은 객체란 상태와 행동을 함께 가지는 단위라는 객체지향의 가장 기본적인 원리를 책임 할당의 관점에서 표현한 것이다.
- 객체란 상태와 행동을 통합한 캡슐화의 단위
- 객체의 책임과 책임을 수행하는 데 필요한 상태는 동일한 객체 안에 존재해야 한다.
- 객체가 자신이 소유하고 있는 정보와 관련된 작업을 수행한다.
- 정보와 행동을 최대한 가까운 곳에 위치시키기 때문에 캡슐화를 유지할 수 있다.
3. 낮은 결합도(LOW COUPLING) 패턴
- 변화의 영향을 줄이며 재사용성을 증가시키는 설계 패턴
- 설계의 결정을 평가할 때 적용할 수 있는 평가 원리.
- 불필요한 협력을 없애는 방향으로 설계를 결정해야 한다.
- 현재의 책임 할당을 검토하거나 여러 설계 대안들이 있을 때 낮은 결합도를 유지할 수 있는 설계를 선택하라.