오브젝트

Ch04. 책임 할당하기 - 설계 트레이드오프(창조자와 낮은 결합도)

webmaster 2024. 10. 5. 21:14
728x90

창조자 패턴(Creator)

  • 문제 - 새로운 인스턴스를 생성하는 책임을 어떤 객체에게 할당할 것인가?
  • 해결 방법 - 아래 조건 중 한 가지라도 만족한다면, A의 인스턴스를 생성할 책임을 B에게 할당하라
    • B가 A를 포함하거나, 참조한다.
    • B가 A를 기록한다.
    • B가 A를 긴밀하게 사용한다.
    • B가 A를 초기화하는데 필요한 정보를 알고 있다.

생성할 책임을 맡게 될 객체는 생성되는 객체와 밀접한 관계를 맺고 있는 객체이다.

EX) 상영이 예매의 생성을 책임을 지는게 좋은 이유

상영과 영화의 책임(창조자 측면)

  • 상영은 창조자 패턴 중 2가지 조건을 만족한다.
  • 영화는 창조자 패턴 중 1가지 조건을 만족한다.
  • 영화보다는 상영이 예매를 생성할 책임을 할당하는 게 더 좋은 선택이다(상영이 2가지 조건을 만족하기 때문)

 

낮은 결합도 패턴(Low Coupling)

결합도는 어느 한 객체가 다른 객체에 의존하는 정도를 의미한다. 그리고 책임을 할당할 때는 전체적으로 결합도가 낮아지는 방향으로 책임을 할당해야 한다.

  • 문제 - 어떻게 낮은 의존성을 유지하고, 변경에 따른 영향을 줄이면서, 재사용성을 높일 수 있을까?
  • 해결 방법 - 설계의 전체적인 결합도를 낮게 유지할 수 있도록 책임을 할당하라

EX) 상영이 예매의 생성을 책임을 지는 게 좋은 이유

상영과 영화의 책임(결합도 측면)

  • 상영과 예매 사이에는 이미 관계가 존재하고 있다.
    • 상영에 예매를 생성하는 책임을 할당하더라도 새로운 관계를 추가할 필요 X
  • 상영과 예매 사이에는 관계가 존재하지 않는다.
    • 상영에 예매를 생성하는 책임을 할당하더라도 새로운 관계를 추가해야 한다.(결합도 증가)

낮은 결합도를 유지하면, 코드를 더 쉽게 수정할 수 있다. 

 

 

참고 창조자 패턴에 1~3번 항목은 낮은 결합도 패턴이며, 이미 결합되어 있는 후보에게 책임을 할당하라고 가이드하고 있으며, 마지막 항목은 정보 전문가에게 책임을 할당하라고 말하는 것이다.

728x90