DDD之领域服务与领域事件

领域服务

领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。这里我们要搞清楚什么样的操作需要实体,值对象,什么样的操作需要采用领域服务。
另外,领域服务不是应用服务,在应用服务中我们不需要处理业务逻辑,业务逻辑都落在领域服务中。
领域服务发现:

  • 执行一个显著的业务操作过程
  • 对领域对象进行转换
  • 以多个领域对象作为输入进行计算,产生一个值对象。
    过度使用领域服务将会产生一个贫血模型,例如数据建模时,我们的实体常用只含有get/set方法,所有的业务逻辑都包含在了service。这样导致service变成了一个大泥球。注意区分领域服务与实体,值对象行为。

领域事件

领域事件通常是用来与其他聚合解耦的,采用观察者模式,一个聚合订阅另外一个聚合的事件。
如果是同一个限界上下文时,通常采用进程内的消息发布领域事件,具体实现可以参考我的这篇博客《Spring Data实现领域事件》
如果是在不同限界上下文时,我们可以采用消息中间件,比如rocket mq,kafka进行消息的订阅与发布。

上一篇:《DDD之如何合理设计一个聚合》
下一篇:《DDD之工厂》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值