객체지향 설계 및 모델링을 공부하면서 책임주도설계
를 알게 되었다. 그리고 객체를 추출하고, 역할을 정의하는데 있어서 이해가 되지 않아 책임주도설계
에 대해 정리하기 위해 해당 글을 작성하게 되었다.
책임주도설계
는 책임을 갖고 책임을 수행할 적절한 객체를 찾아 할당하는 방식으로 협력을 설계하는 것이다.
수행하는 책임들이 모여 객체가 수행하는 구성
객체가 협력에 참여하기 위해 수행하는 로직(행동)
객체들이 애플리케이션의 기능구현을 위해 수행하는 상호작용 -> 협력에서 수행하는 책임의 집합
-> 즉, 객체가 수행해야하는 책임이 무엇인지 생각해보라 / 책임을 수행하는 데 필요한 데이터를 생각해보라
-> 협력은 객체들 간 상호작용을 통해 이루어지는 것을 말한다. 즉, 객체는 다른 객체의 메서드를 호출하거나 메시지를 보내어 상호작용합니다. 메시지를 받은 객체는 적절한 작업을 수행하고 결과를 반환하며 메시지를 보내어 협력을 이어나갑니다.
이처럼 객체들간 협력(상호작용)이 객체가 필요한 이유와 수행하는 동기를 제공한다.
그리고 협력을 시작하는 주체는 메시지 전송자이기 때문에 협력에 적합한 책임은 메시지 수신자 아니라 메시지 전송자에게 적합한 책임을 의미한다.
즉, 메시지 전송자의 관점에서 메시지 수신자가 깔끕하게 캡슐화되어야한다는 것이다.