• 新子域:Management
    • 新限界上下文:Management
    • 支付行为如何运作
    • Snack Machine的钱如何流转至ATM

    上面的需求和之前的类型完全不一样,我们需要一个新的抽象来记录无线支付和转账功能。定义抽象的最好方式就是与领域专家沟通,寻找下列问题的答案:付款怎么入账?它们目标是什么?从snack machine流入ATM的准确金额是多少?假设用户的钱从银行卡转到总行。从售货机不直接转账至ATM,而是先转至总行,然后再发送至ATM。此时上下文映射:
    image.png
    界限上下文使用了Money类,u代表上游,d代表下游。Management将使用SnackMachine和ATM实体去流转金额。在Management中引入一个新类——HeadOffice银行总行。

    1. package com.lugew.domaindrivendesignwithspringboot.management;
    2. import com.lugew.domaindrivendesignwithspringboot.common.AggregateRoot;
    3. import com.lugew.domaindrivendesignwithspringboot.sharedkernel.Money;
    4. import lombok.Getter;
    5. import lombok.Setter;
    6. @Getter
    7. @Setter
    8. public class HeadOffice extends AggregateRoot {
    9. private float balance;
    10. private Money cash;
    11. }

    balance属性记录用户银行卡支付款项。cash记录从snackMachine转移来的款项。