오브젝트

Ch02. 절차적인 설계 개선하기 - 절차에서 객체로

webmaster 2024. 9. 29. 23:21
728x90

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

도메인 구조
ReservationService의 의존성 변경

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

의존성 관리

의존성 관리

  • DiscountPolicy가 DiscountCondition을 숨기는 캡슐화 경계를 형성한다.
  • DiscountPolicy를 이용해 DiscountCondition을 캡슐화 했기 때문에 ReservationService는 더 이상 DiscountCondition에 대해서 알 수가 없다.
    • DiscountCondition이 수정되더라도 ReservationService는 영향이 없다.

 

참고: 처음부터 의존성을 고려해서 설계할 수 없을까??

절차적인 방식에서는 변경과 의존성 관점에서 시도해 볼 수 있는 방법에 제한이 있을수 밖에 없다. 절차적인 방식에서는 데이터가 사용될 문맥을 고려하지 않고 데이터를 설게하기 때문에 데이터를 수정하면 데이터에 의존하는 프로세스도 함께 수정될 수밖에 없다.
이 문제를 해결하는 최선의 방법은 객체를 설계하기 시작하는 초기부터 객체가 사용될 문맥을 함께 고려하는 것 뿐이다.
객체가 사용될 문맥을 고려해서 데이터와 책임을 동일한 클래스 안에 모아놓는 다면 객체를 수정할 떄 다른 코드에 미치는 파급효과를 최소화할 수 있을 것이다.
이처럼 객체를 설계할 때 객체가 사용될 문맥을 함께 고려하는 설게 방법을 책임주도 설계방법 이라고 한다.

728x90