협력
영화예매시스템 돌아보기 - 객체들이 메시지를 주고받으면서 상호작용한다.(협력)
객체가 협력에 참여하기 위해 수행하는 로직 : 책임
객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다.
협력
객체는 자신이 알 필요 없는 정보나 행동이 필요한 경우 외부에 메시지를 보내 도움을 요청한다.
객체들의 이러한 일련의 요청과 응답이 협력이다.
협력이 설계를 위한 문맥을 결정한다
상태는 객체가 행동하는데 필요한 정보가 무엇인지에 의해 결정된다.
행동은 협력 안에서 객체가 처리할 메시지로 결정된다.
협력이라는 문맥을 고려하지 않고 객체의 행동을 결정하는 것은 아무런 의미가 없다.
책임
책임이란 무엇인가
객체지향 설계에서 가장 중요한 것이 책임이다.
책임은 하는 것과 아는 것 두가지 범주로 나눈다.
책임 할당
책임을 수행하는데 필요한 정보를 가장 잘 알고 있는 전문가에게 그 책임을 할당 : 정보 전문가 패턴
책임 주도 설계
책임을 먼저 찾고 적절한 객체를 찾아 책임을 할당하는 방식 : 객체 구현이 아닌 책임에 집중한다.
메시지가 객체를 결정한다
왜 메시지가 객체를 선택하게 해야 하는가?
1. 객체가 최소한의 인터페이스를 가지게 된다.
꼭 필요한 크기의 퍼블릭 인터페이스를 가진다.
2. 객체는 추상적인 인터페이스를 가지게 된다.
무엇을 하는지는 표현하지만 어떻게 하는지는 숨길 수 있다.
행동이 상태를 결정한다
데이터 주도 설계는 캡슐화를 저해한다.
상태는 단지 행동 수행의 재료일 뿐이다.
역할
역할과 협력
역할 : 객체가 특정한 협력 안에서 수행하는 책임의 집합
특정 객체가 아니라 역할에게 책임을 할당한다고 생각하는게 좋다
유연하고 재사용 가능한 협력
역할을 통해 가능하다.
구체적인 객체를 포괄하는 추상화이다.
예를 들어 할인 요금을 계산하는 역할이 있다면 그 역할의 책임은 계산 방법에 따라 여러개가 있을 수 있다.
객체 대 역할
협력에 적합한 책임을 수행하는 대상이 한 종류밖에 없다면 객체
여러 종류의 객체가 참여할 수 있다면 역할이다.
역할과 추상화
추상화의 장점
중요한 정책을 상위 수준에서 단순화할 수 있다 : 한 눈에 알아볼 수 있도록
설계가 유연해진다 : 다양한 객체를 바꿔치기할 수 있다.
배우와 배역
배역 : 역할
배우 : 객체
역할은 객체의 페르소나이다.
역할은 객체가 협력에 참여하는 잠시 동안에만 존재하는 일시적인 개념이다.
따라서 객체는 다양한 역할을 가질 수 있다.
'책' 카테고리의 다른 글
테스트주도 개발로 배우는 객체 지향 설계와 실천 목차 (0) | 2021.04.19 |
---|---|
[스마트한 시간관리 인생관리 습관] 생산성 올리는 방법 : 짧은 분출 (마감효과) (0) | 2021.03.10 |
오브젝트 구성 (0) | 2021.03.03 |
[루비로 배우는 객체지향 디자인] 6장~끝 정리 (0) | 2021.02.03 |
[칼럼] The nature of software development, 클린 애자일 (0) | 2020.12.30 |