Aoount 엔티티는 실제 계좌의 현재 스냅숏을 제공Activity 엔티티에 포착된다.Account 엔티티는 ActivityWindow 값 객체에서 포착한 몇 주간의 범위에 해당하는 활동만 보유한다.Account 엔티티는 ActivityWindow의 첫 번째 활동 전 잔고를 표현하는 baselineBalance 필드를 가진다. (총 잔고는 baselineBalance + ActivityWindow의 모든 잔고를 합한 값)withdraw()와 deposit() 메서드로 입금과 출금의 활동들을 활동창에 추가할 수 있다.SendMoneyService는 SendMoneyUseCase를 구현LoadAccountPort 호출UpdateAccountStatePort 호출SendMoneyCommand의 파라미터 수가 변화비즈니스 규칙 검증의 가장 좋은 방법은 도메인 엔티티 안에 작성하는 것이다.
public class Account {
// ...
public boolean withdraw(Money money, AccountId targetAccountId) {
if (!mayWithdraw(money)) {
return false;
}
// ...
return true;
}