Closed JisuPark-dev closed 2 months ago
Screening
에 책임이 너무 많이 부여되는 것 같아 보이지 않나요?
DiscountPolicy
의 기능이 Movie
에 캡슐화되어 있었기 때문에 Screening
에서 DiscountPolicy
를 알 필요가 없었어요.계산하기
와 할인하기
를 같이 구현하면 Screening
에서 DiscountPolicy
의 인터페이스를 알아야 해요.책임의 분리는 사람마다 기준이 다르겠지만 캡슐화할 수 있는 것은 최대한 캡슐화해서 사용하기 쉽게 만드는 방향으로 가는 게 좋은 방향이라고 생각해요!
DiscountPolicy
같은 경우는 Movie
에서 영화 표의 가격을 계산할 때만 필요하니 Movie
의 계산하라
라는 역할에 캡슐화되어 구현되는 게 좋지 않을까? 생각했어요.Screening
이 참조하는 Movie
가 아닌 다른 객체에서도 할인하라
라는 메시지를 사용해야 한다면 수동의 방식도 고려해볼 수 있을 것 같아요!"DiscountPolicy 같은 경우는 Movie에서 영화 표의 가격을 계산할 때만 필요하니 Movie의 계산하라라는 역할에 캡슐화되어 구현되는 게 좋지 않을까? 생각했어요." 이 말씀 듣고 잘 이해가 되는 것 같아요! 캡슐화라는 키워드로 볼 때, 할인하라는 것을 screening이 알고 있을 필요는 현재 구조에서는 없는게 맞다고 생각합니다!
책임 -> ## 책임할당
1) 정보전문가란 일반 객체와 어떻게 다를까요?
2) 책임을 할당하는 기준은 무엇이 될까요? 책의 예시에서는 screening과 movie, discountPolicy가 예시로 나왔습니다. 예매하기, 계산하기, 할인 계산하기라는 메세지들을 처리하기 위해서 책임을 맡을 객체들을 골른 것입니다.
저는 얼핏 생각들기에는 예매하기라는 메세지를 메서드로 구현하면서, 계산하기 할인하기를 한 메서드 안에 같이 구현했을 것 같습니다.
이렇게 말이죠.
어렴풋이 단일 책임 원칙이라는 개념이 떠오르지만, 책임의 분리를 어떻게 해야할지 모르겠습니다.