728x90
높은 응집도 패턴(High Cohesion)
- 문제 - 어떻게 낮은 결합도를 유지하고, 변경에 따른 영향을 줄이면서 재사용성을 높일 수 있을까?
- 해결 방법 - 높은 응집도를 유지하도록 책임을 할당하라
높은 응집도의 취지는 여러 개의 책임을 할당할 경우 하나의 객체에 함께 할당할 수 있는 책임들의 특성을 제한하자는 것이다. 즉 서로 밀접한 관련성을 가진 책임들만 같은 객체에 할당해야 한다. 연관성이 높은 책임들을 객체에 할당하고 연관성이 낮은 책임들을 다른 객체로 이동시키면, 하나의 객체가 너무 많은 일을 하는 것을 방지할 수 있다.
높은 응집도가 중요한 이유는 설계하기 쉬운 코드를 만들기 위해서이다.
서로 연관성이 적은 책임이 하나의 객체 안에 모여 있다면 코드를 읽을 때 수정할 부분을 찾기가 어려워진다. 서로 다른 책임이 하나의 코드 안에 함께 존재하기 때문에 어떤 책임을 부여한 코드를 수정하면 해당 책임과는 아무런 상관없는 다른 코드가 영향을 받을 가능성도 높아진다. (코드를 이해하기 어렵고, 수정으로 버그가 발생할 확률도 올라간다)
ex) 영화 가격을 계산하는 책임은?

상영이 영화 가격을 계산하는 책임을 가지게 된다면 너무 많은 책임을 가지게 되고, 서로 상관 없는 책임(상영을 예매하는 책임, 가격을 계산하는 책임)들이 뭉쳐있게 되므로 다른 객체에 해당 책임을 지도록 해야 한다. 책임을 할당하기 위해서는 정보 전문가 패턴을 기반으로 영화에게 가격을 계산할 책임을 지도록 하면 된다.
만약 영화에 영화 예매를 생성하는 책임을 주도록 개발하였더라면, 영화는 가격을 계산하는 책임과 예매를 생성하는 책임 서로 다른 2가지 책임에 대한 책임을 가지게 되므로 응집도가 낮아진다.
728x90
'오브젝트' 카테고리의 다른 글
| Ch04 책임 할당하기 - 변경 보호 (8) | 2024.10.05 |
|---|---|
| Ch04. 책임 할당하기 - 다형성 (0) | 2024.10.05 |
| Ch04. 책임 할당하기 - 설계 트레이드오프(창조자와 낮은 결합도) (0) | 2024.10.05 |
| Ch04. 책임 할당하기 - 정보와 책임 할당(정보 전문가) (0) | 2024.10.05 |
| Ch03. 객체지향 기본 원칙 - 표현적 차이 줄이기 (0) | 2024.10.01 |