3장 역할, 책임, 협력

swucs·2022년 2월 8일
0

오브젝트

목록 보기
2/13

출처 : 오브젝트 (조영호 저)

협력

메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 수단이다. 객체는 다른 객체의 상세한 내부 구현에 직접 접근할 수 없기 때문에 오직 메시지 전송을 통해서만 자신의 요청을 전달할 수 있다.

메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 자신이 할 수 없는 일을 다른 객체에게 위임하면 협력에 참여하는 객체들의 전체적인 자율성을 향상시킬 수 있다. 결과적으로 객체를 자율적으로 만드는 가장 기본적인 방법은 내부 구현을 캡슐화 하는 것이다.

책임

협력에 참여하기 위해 객체가 수행하는 행동을 책임이라고 부른다. 객체의 책임은 객체가 “무엇을 알고 있는가?”와 “무엇을 할 수 있는가"로 구성된다. 객체에게 얼마나 적절한 책임을 할당하느냐가 설계의 전체적인 품질을 결정한다.

객체가 책임을 수행하게 하는 유일한 방법은 메시지를 전송하는 것이므로 책임을 할당한다는 것은 메시지의 이름을 결정하는 것과 같다. 메시지를 선택했으면 메시지를 처리할 적절한 객체를 선택해야 한다. 이러한 방법을 책임 주도 설계(Responsibility Driven Design)이라 부른다.

객체를 객체답게 만드는 것은 객체의 상태가 아니라 객체가 제공하는 행동이다. 상태에 초점을 맞추면 내부 구현이 노출되기 때문에 캡슐화를 저해한다. 이러한 설계 방법을 데이터 주도 설계라고 부르기도 했다.

역할

객체가 어떤 특정한 협력안에서 수행하는 책임의 집합을 역할이라고 부른다. 역할이 중요한 이유는 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있기 때문이다.

역할은 공통의 책임을 바탕으로 객체의 종류를 숨기기 때문에 이런 관점에서 역할을 객체의 추상화로 볼 수 있다. 역할이 중요한 이유는 동일한 협력을 수행하는 객체들을 추상화 할 수 있기 때문이다.

profile
백엔드 개발자

0개의 댓글

관련 채용 정보