mobilohas / object

object 책 읽기 스터디
3 stars 1 forks source link

[Chapter03] 1) 정보전문가란 일반 객체와 어떻게 다를까요? 2) 책임을 할당하는 기준은 무엇이 될까요? #10

Closed JisuPark-dev closed 2 months ago

JisuPark-dev commented 2 months ago

책임 -> ## 책임할당

1) 정보전문가란 일반 객체와 어떻게 다를까요?

2) 책임을 할당하는 기준은 무엇이 될까요? 책의 예시에서는 screening과 movie, discountPolicy가 예시로 나왔습니다. 예매하기, 계산하기, 할인 계산하기라는 메세지들을 처리하기 위해서 책임을 맡을 객체들을 골른 것입니다.

저는 얼핏 생각들기에는 예매하기라는 메세지를 메서드로 구현하면서, 계산하기 할인하기를 한 메서드 안에 같이 구현했을 것 같습니다.

public void 예매하기{
    계산하기();
    할인하기();
}
private void 계산하기(){...};
private void 할인하기(){...};

이렇게 말이죠.

어렴풋이 단일 책임 원칙이라는 개념이 떠오르지만, 책임의 분리를 어떻게 해야할지 모르겠습니다.

pythonstrup commented 2 months ago
  1. 비즈니스 로직을 가진 모든 객체는 정보 전문가 객체라고 생각합니다.
    • 책에서 "예매하라", "가격을 계산하라", "할인 요금을 계산하라" 등의 메시지(비즈니스 로직)를 전달하고 그것을 수행해줄 수 있는 모든 객체가 정보 전문가 객체가 아닐까요?
    • 비즈니스 로직 없이 데이터를 주고 받을 때 사용하는 DTO는 정보 전문가 객체라고 보기는 어려울 것 같아요!


  1. 제가 질문을 정확히 이해한 것인지 모르겠지만 수동에 말에 따르면 아래와 같은 구조가 될 것 같아요.

image

image

JisuPark-dev commented 2 months ago

"DiscountPolicy 같은 경우는 Movie에서 영화 표의 가격을 계산할 때만 필요하니 Movie의 계산하라라는 역할에 캡슐화되어 구현되는 게 좋지 않을까? 생각했어요." 이 말씀 듣고 잘 이해가 되는 것 같아요! 캡슐화라는 키워드로 볼 때, 할인하라는 것을 screening이 알고 있을 필요는 현재 구조에서는 없는게 맞다고 생각합니다!