2023.08.08 TUE
90p ~ 107p
7일차 내용 ⬇️
2023.08.08 - [개발 서적 기록/오브젝트_조영호] - 7일차 - 적절한 책임과 적합한 역할
7일차 - 적절한 책임과 적합한 역할
2023.08.07 MON 77p ~ 91p 6일차 내용 ⬇️ 2023.08.07 - [개발 서적 기록/오브젝트_조영호] - 6일차 - 합성을 통한 코드 재사용과 협력 6일차 - 합성을 통한 코드 재사용과 협력 2023.08.06 SUN 65p ~ 77p 5일차 내용
magenta-ming.tistory.com
역할과 추상화
역할의 가장 큰 장점은 설계의 구성 요소를 추상화할 수 있다는 것이다.
역할은 공통의 책임을 바탕으로, 객체의 종류를 숨길 수 있다. 그래서 역할을 객체를 추상화한 것으로 볼 수 있다.
그럼 역할로 추상화한다면 어떤 이점이 있을까?
1. 세부사항에 억눌리지 않고도, 상위 수준의 정책을 쉽고 간단하게 표현할 수 있다.
2. 설계를 유연하게 만든다.
역할은 추상화를 통해서 다양한 환경에서 다양한 객체들을 수용할 수 있도록 한다. 그래서 협력을 유연하게 만든다.
객체의 역할은 캡슐화를 인해 다형적이다.
객체는 여러 역할을 가질 수 있다.
하지만, 특정한 협력 안에서는 일시적으로 오직 하나의 역할만이 보여진다.
객체가 다른 협력에 참여할 때에는, 이전의 역할은 잊혀지고, 해당 협력에서 바라보는 역할의 측면에서 보여진다.
협력의 관점에서 동일한 역할을 수행하는 객체는 서로 대체 가능하다.
역할은 특정한 객체의 종류를 캡슐화하기 때문에, 동일한 역할을 수정한다.
역할은 특정한 객체의 종류를 캡슐화하기 때문에, 정해진 룰을 준수하는, 대체 가능한 객체들은 다형적이다.
데이터 중심설계와 책임 중심 설계
데이터 중심 설계는 객체 내부에 저장되는 데이터를 기반으로 시스템을 분할하는 설계다.
그리고, 데이터 중심 설계에서는 객체는 자신이 포함하고 있는 데이터를 조작하는데 필요한 Operation을 정의한다.
그래서 변경에 취약하다.
상태를 변경하면 ➡️ 인터페이스가 변경되고 ➡️ 인터페이스에 의존하는 객체에 영향을 끼친다.
반면에, 객체의 책임은 인터페이스에 의존하지 않는다. 인터페이스 안에 속한다.
그래서 책임 수행에 필요한 상태를, 인터페이스를 통해 캡슐화 한다.
따라서 구현에 대한 영향이 외부로 끼치기 어렵다.
'개발 서적 기록 > 오브젝트_조영호' 카테고리의 다른 글
10일차 - 진정한 캡슐화는 변경 가능한 모든 것을 내부에 숨긴다 (0) | 2023.08.10 |
---|---|
9일차 - 캡슐화, 응집도 그리고 결합도 (0) | 2023.08.09 |
7일차 - 적절한 책임과 적합한 역할 (0) | 2023.08.08 |
6일차 - 합성을 통한 코드 재사용과 협력 (2) | 2023.08.07 |
5일차 - 상속과 다형성의 목적 (0) | 2023.08.04 |