728x90
05/ 책임 할당하기
이번 장에서 살펴볼 GRASP패턴은 책임 할당의 어려움을 해결하기 위한 답을 제시해 줄 것이다..
1.책임 주도 설계를 향해
데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음의 두 가지 원칙을 따라야 한다.
- 데이터보다 행동을 먼저 결정하라
- 협력이라는 문맥 안에서 책임을 결정하라
책임 주도 설계
- 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다.
- 시스템 책임을 더 작은 책임으로 분활한다
- 분활된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다
- 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다
- 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다
2.책임 할당을 위한 GRASP패턴
크레이그 라만이 패턴 형식으로 제안한 GRASP패턴
General Responsibility Assignment Software Pattern (일반적인 책임 할당을 위한 소프트웨어 패턴)
객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들의 집합을 패턴 형식으로 정리한 것이다.
- 도메인 개념에서 출발기
- 정보 전문가에게 책임을 할당하라 - Information Expert
- 높은 응집도와 낮은 결합도 - High Cohesion & Low Coupling
- 창조자에게 객체 생성 책임을 할당하라 - Creator
아래 조건을 가장 많이 만족하는 객체(A)에게 객체(B) 생성 책임을 할당하라.- A는 B 객체를 포함하거나 참조한다.
= A는 B 객체를 기록한다. - A는 B 객체를 긴밀하게 사용한다.
- A는 B 객체를 초기화하는 데 필요한 데이터를 갖고 있다. (A는 B 객체에 대한 [[정보 전문가 패턴]])
- A는 B 객체를 포함하거나 참조한다.
3.구현을 통한 검증
- 다형성을 통한 분리하기 - Polymorphism
- 변경으로부터 보호하기 - Protected Variations
4.책임 주도 설계의 대안
- 래픽터링
이해하기 쉽고 수정하기 쉬운 소프트웨어로 개선하기 위해 겉으로 보이는 동작은 바꾸지 않은 채 내부 구조를 변경 - 메서드 응집도
- 몬스터 메서드. 긴 메서드는 응집도가 낮기 때문에 이해하기도 어렵고 재사용하기도 어려우며 변경하기도 어렵다.
- 응집도가 낮은 메서드는 로직의 흐름을 이해하기 위해 주석이 필요한 경우가 대부분이다.
728x90
반응형
'IT서적 > 오브젝트' 카테고리의 다른 글
| [오브젝트: 코드로 이해하는 객체지향 설계/조영호]7장: 객체 분해 (0) | 2025.12.04 |
|---|---|
| [오브젝트: 코드로 이해하는 객체지향 설계/조영호]6장: 메시지와 인터페이스 (0) | 2025.11.14 |
| [오브젝트: 코드로 이해하는 객체지향 설계/조영호]4장: 설계 품질과 트레이드오프 (0) | 2025.11.14 |
| [오브젝트: 코드로 이해하는 객체지향 설계/조영호]3장: 역할, 책임, 협력 (0) | 2025.11.14 |
| [오브젝트: 코드로 이해하는 객체지향 설계/조영호]2장: 객체지향 프로그래밍 (0) | 2025.11.14 |