5장

GRASP 패턴 - 책임 할당과 트레이드오프를 결정하는 법

데이터보다 행동을 먼저 결정하라

객체는 협력에 참여하기 위해 존재한다

질문 순서

  1. 이 객체가 수행해야 하는 책임은?
  2. 이 책임을 수행하는 데 필요한 데이터는?

책임 → 책임

협력 안에서 책임을 결정하라

메시지를 결정하고 객체를 선택해야한다

메시지 → 객체

메시지

클라이언트의 의도를 담음

수신 객체는 메시지를 처리할 책임을 가짐

클라이언트는 수신자에 대한 어떠한 가정도 할 수 없다

책임 주도 설계

  1. 시스템 책임 (시스템이 사용자에게 제공해야 하는 기능)을 파악
  2. 시스템 책임을 더 작은 책임으로 분할
  3. 분할된 책임을 수행할 수 있는 객체나 역할을 찾아 할당한다
  4. 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 적절한 객체나 역할을 찾는다
  5. 두 객체가 협력하게 만든다

객체들의 책임이 결정될 때까지는 객체 내부 상태에 대해 관심을 갖지 말자

책임 할당을 위해 GRASP 패턴

GRASP (General Responsibility Assignment Software Pattern)

도메인 개념에서 출발

도메인에 대한 개략적인 모습을 도식화 해보자

1:n 등

개념들의 의미와 관계가 완벽할 필요는 없음

너무 많은 시간을 들이지 말고 빨리 해라