





























绝大多数业务逻辑都应该放进实体或值对象。但有些逻辑天生不属于任何一个对象,硬塞进去会很别扭。
例:"用某张优惠券,计算订单能减多少钱"。这个逻辑同时涉及订单和优惠券两个聚合,它既不该属于 Order(订单不该懂优惠券的所有规则),也不该属于 Coupon(优惠券不该懂订单结构)。这种跨多个聚合的、无状态的业务逻辑,就放进领域服务。
判断口诀:一个操作如果"不属于任何一个实体/值对象,且涉及多个领域对象的协调",就用领域服务。但要克制——能放进实体的,绝不放领域服务,否则又退回贫血模型。
领域事件(Domain Event)—— 解耦利器
一、大白话:什么是领域事件
领域事件 = "业务上已经发生的、值得让别人知道的事实",用过去式命名。
"优选门店"里的领域事件:订单已创建(OrderPlaced)、订单已支付(OrderPaid)、订单已取消(OrderCancelled)、库存已扣减(StockDeducted)。
注意都是过去式——表示"事情已经发生了",是既成事实,不是命令。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。