예제에서 한 계좌에서 다른 계좌로 송금하는 유스케이스를 구현!
Account 엔티티 → 실제 계좌의 현재 스냅숏 제공
Activity 엔티티 → 계좌에 대한 모든 입금과 출금을 포착
입금과 출금은 새로운 Activity를 추가하는 것에 불과하다.
출금하기 전에는 잔고를 초과하는 금액은 출금할 수 없도록 하는 비즈니스 규칙을 검사한다.
1. 입력을 받는다.
2. 비즈니스 규칙을 검증한다.
3. 모델 상태를 조작한다.
4. 출력을 반환한다.
유스케이스 코드는 도메인 로직에만 신경 써야 한다. → 입력 유효성 검증으로 오염되면 안된다! → 책임의 분리!
이때**, 유스케이스는 비즈니스 규칙을 검증할 책임이 있다! → 도메인 엔티티와 이 책임을 공유하게 된다.**