领域驱动设计DDD: 战术模式概述

云的事情不好说2024-05-19 08:10:38  108

实体(Entity):实体是一个具有唯一身份并随时间持续存在的对象。例如,在银行应用程序中,客户和账户将是实体。

实体在系统中具有唯一标识符,可用于查找或检索实体。这并不意味着标识符总是直接暴露给用户。它可以是GUID或数据库中的主键。

值对象(Value Object):值对象没有身份。它仅由其属性的值定义。值对象也是不可变的。要更新值对象,我们总是创建一个新实例来替换旧的实例。值对象可以具有封装领域逻辑的方法,但这些方法不应影响对象的状态。典型的值对象示例包括颜色、日期和时间以及货币值。

聚合(Aggregate):聚合在多个实体周围定义了一个一致性边界。聚合中恰好有一个实体是根。使用根实体的标识符进行查找。聚合中的任何其他实体都是根的子级,并且是通过从根(Root)跟随指针进行引用的。

领域和应用程序服务(Domain and application services):在DDD术语中,服务是一个实现一些逻辑而不持有任何状态的对象。Evans区分了领域服务和应用程序服务,前者封装领域逻辑,后者提供技术功能,如用户认证或发送短信消息。领域服务通常用于模拟跨越多个实体的行为。

领域事件(Domain events):领域事件可用于在系统发生某事时通知系统的其他部分。顾名思义,领域事件在领域内应该有意义。例如,“记录插入到表中”不是领域事件。“交付被取消”是领域事件。领域事件在微服务架构中特别相关。因为微服务是分布式的,不共享数据存储,领域事件为微服务提供了一种相互协调的方式。文章“服务间通信”更详细地讨论了异步消息传递。

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/551891.html
0
最新回复(0)