富领域模型和贫血模型

例如:一个名叫wangcai的狗要触发这个狗的yaoweiba事件10次

  1. Dog
  1. Dog wangcai = new Dog(); // 一次性通过构造函数创造
  2. wangcai.yaoweiba(10);

开放封闭原则:对扩展开放,对修改封闭。
依赖反转原则:面向接口依赖,而不要依赖实现类。

  1. public class Account{
  2. private Long id;
  3. private Long accountNumber; //
  4. private BigDecimal available; // 可用余额
  5. public void withdraw(BigDecimal money){
  6. // 转入
  7. available = available + money;
  8. }
  9. public void deposit(BigDecimal money){
  10. // 转出操作
  11. if(money > available){
  12. throw new BizException("余额不足");
  13. }
  14. available = available - money;
  15. }
  16. }

DDD充血模型。
DDD贫血模型。
通过Account就可以查看到具体的业务操作。如果是账号的其他信息操作,例如修改用户信息,则可以用另外的model来实现
业务随着实体变化而变化
Order(订单)->OrderItem(订单信息)->Address(订单地址信息)
在DDD中通过在Order设计一个订单ID,然后其他信息放在OrderItem和Address中,并且作为Order的一个子对象,每次操作的时候操作Order。
实体与子对象的关系。

Repository 仓库
Factory工程组装
image.png