# 21 PR

ClassBinu·2024년 5월 18일

F-lab

목록 보기
23/65

Point 객체를 설계하실때 해당 객체 가 가질 수 있는 자율성의 범위는 어떻게 설정하셨을까요?

Point객체에는 이 포인트에 속하는 User와 balance가 있음.
즉, 이 객체는 포인트의 balance의 증감을 책임져야 하고, 외부의 다른 객체가 Point 객체의 balance의 상태를 변화시키면 안 됨. balance 상태 변화는 오직 Point 객체가 자율적으로 책임져야 함. 외부에서는 메시지를 보낼 수 있지만 이 메시지를 어떻게 처리하는지는 최종적으로 Point객체 스스로가 (자신의 메서드를 통해) 결정함.

또한 PointService, PointTransationService 를 설계 하셨을때 각각의 객체 들의 역할의 범위는 어떤 기준으로 나누려고 생각하셨을까요?

PointService는 Point 객체 자체를 CRUD 하는 역할을 하며 내부 필드의 값이 변경될 때는 직접 변경하는 게 아니라 Point 객체에게 메시지를 보내는 역할을 함. 즉, Point라는 거대한 외부를 책임짐.

PointTransactionService는 거래내역을 생성하라는 메시지를 보내는 것과, 생성되는 거래내역에 따른 포인트 잔액 차감을 하라는 메시지를 Point 객체에 전송하는 역할을 함. 즉, PointTransaction의 외부를 책임지는 것과, Point에 메시지를 전송하는 역할을 함.

각 객체 들의 역할 범위가 정의되어 있다면, adjustBalance 라는 임무는 어떤 객체 가 수행 하는게 가장 올바를까요?

Point 객체가 수행한다! 왜냐면 balace는 Point 객체의 필드이고, 이건 Point 객체 내부에서만 접근해서 조정하는 게 바람직한다.

PointService 또는 PointTrasactionService 객체는 Point에 메시지를 보내는 것
그 메시지를 받아서 처리하는 건 Point 객체의 adjustBalance다!

0개의 댓글