- 新子域:Management
- 新限界上下文:Management
- 支付行为如何运作
- Snack Machine的钱如何流转至ATM
上面的需求和之前的类型完全不一样,我们需要一个新的抽象来记录无线支付和转账功能。定义抽象的最好方式就是与领域专家沟通,寻找下列问题的答案:付款怎么入账?它们目标是什么?从snack machine流入ATM的准确金额是多少?假设用户的钱从银行卡转到总行。从售货机不直接转账至ATM,而是先转至总行,然后再发送至ATM。此时上下文映射:
界限上下文使用了Money类,u代表上游,d代表下游。Management将使用SnackMachine和ATM实体去流转金额。在Management中引入一个新类——HeadOffice银行总行。
package com.lugew.domaindrivendesignwithspringboot.management;
import com.lugew.domaindrivendesignwithspringboot.common.AggregateRoot;
import com.lugew.domaindrivendesignwithspringboot.sharedkernel.Money;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HeadOffice extends AggregateRoot {
private float balance;
private Money cash;
}
balance属性记录用户银行卡支付款项。cash记录从snackMachine转移来的款项。