TIL

05 책임 할당하기

01 책임 주도 설계를 향해

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

협력이라는 문맥 안에서 책임을 결정하라

책임 주도 설계

02 책임 할당을 위한 GRASP 패턴

도메인 개념에서 출발하기

올바른 도메인 모델이란 존재하지 않는다. 위의 영화 시스템 도메인 모델도 2장에서 설명한 모델과 다르다. 올바른 구현을 이끌어낼 수 있다면 정답을 둘 다 올바르다. 이번 장의 마지막에 이르면 도메인 모델이 2장과 동일하게 변경되는데 이는 유연성과 재사용성을 고려하며 얻게 되는 통찰이 역으로 도메인에 대한 개념을 바꾸기 때문이다. 중요한 것은 도메인을 그대로 투영한 모델이 아닌 구현에 도움이 되는 모델이다.

정보 전문가에게 책임을 할당하라

INFORMATION EXPERT 패턴이란 객체가 자신이 소유한 정보와 관련된 작업을 수행한다는 일반적인 직관을 표현한 패턴이다. 다만 ‘정보’ ‘데이터’는 다른데 객체가 정보를 알고 있다고 해서 그 정보를 ‘저장’할 필요는 없기 때문이다. 정보를 굳이 저장하지 않고 계산 등을 통해서도 도출할 수 있다.

높은 응집도와 낮은 결합도

창조자에게 객체 생성 책임을 할당하라

CREATOR 패턴의 의도는 어떤 방식으로든 생성되는 객체와 연결되거나 관련될 필요가 있는 객체에 해당 객체 생성 책임을 맡기는 것. 이미 결합돼 있는 객체에게 생성 책임을 할당하는 것은 전체적인 결합도에 영향을 미치지 않는다.

03 구현을 통한 검증

DiscountCondition 개선하기

타입 분리하기

다형성을 통해 분리하기

변경으로부터 보호하기

Movie 클래스 개선하기

도메인 구조가 코드의 구조를 이끈다. 도메인 모델은 단순히 설계에 필요한 용어를 제공하는 것을 넘어 구조에 영향을 미친다. 변경 역시 도메인 모델의 일부이다. 도메인 모델에는 도메인 안에서 변하는 개념과 이들 사이 관계가 투영되어 있어야 한다. 위 도메인 모델에서도 할인 정책과 조건이 변경될 수 있다는 직관이 반영되어 있다.

변경과 유연성

04 책임 주도 설계의 대안

메서드 응집도

객체를 자율적으로 만들자