728x90
도메인 구조를 이용해서 의존성 제어하기


- Reservation Service가 Discount Policy와 Discount Condition 둘 중 하나에만 의존하도록 구조를 수정
- 할인 정책과 할인 조건을 도메인에 표현된 구조에 따라 연결하고 ReservationService가 DiscountPolicy 정책만 참조하도록 구조를 조절하면 의존하는 객체의 수를 줄일 수 있다.
- Reservation Service는 이제 DiscountPolicy의 변경에만 영향을 받기 때문에 더 안정적인 구조를 만들 수 있다.
의존성 관리

- DiscountPolicy가 DiscountCondition을 숨기는 캡슐화 경계를 형성한다.
- DiscountPolicy를 이용해 DiscountCondition을 캡슐화 했기 때문에 ReservationService는 더 이상 DiscountCondition에 대해서 알 수가 없다.
- DiscountCondition이 수정되더라도 ReservationService는 영향이 없다.
참고: 처음부터 의존성을 고려해서 설계할 수 없을까??
절차적인 방식에서는 변경과 의존성 관점에서 시도해 볼 수 있는 방법에 제한이 있을수 밖에 없다. 절차적인 방식에서는 데이터가 사용될 문맥을 고려하지 않고 데이터를 설게하기 때문에 데이터를 수정하면 데이터에 의존하는 프로세스도 함께 수정될 수밖에 없다.
이 문제를 해결하는 최선의 방법은 객체를 설계하기 시작하는 초기부터 객체가 사용될 문맥을 함께 고려하는 것 뿐이다.
객체가 사용될 문맥을 고려해서 데이터와 책임을 동일한 클래스 안에 모아놓는 다면 객체를 수정할 떄 다른 코드에 미치는 파급효과를 최소화할 수 있을 것이다.
이처럼 객체를 설계할 때 객체가 사용될 문맥을 함께 고려하는 설게 방법을 책임주도 설계방법 이라고 한다.
728x90
'오브젝트' 카테고리의 다른 글
| Ch03. 객체지향 기본 원칙 - 책임 주도 설계 (0) | 2024.10.01 |
|---|---|
| Ch03. 객체지향 기본 원칙 - 객체지향 설계 원칙 (0) | 2024.10.01 |
| Ch02. 절차적인 설계 개선하기 - 데이터와 프로세스 통합하기 (0) | 2024.09.29 |
| Ch02. 절차적인 설계 개선하기 - 변경과 의존성 (0) | 2024.09.29 |
| Ch02. 절차적인 설계 개선하기 - 절차적인 설계 (0) | 2024.09.29 |