考虑涉及领域驱动设计 (DDD) 的某些类型的对象:实体、值对象、领域事件和领域服务。
其中哪些被认为是域对象?还有其他的抽象名称来封装其中的一个子集吗?
在谈论 DDD 或域模型时,我可以识别出各种有用的抽象:
实体和值对象。我经常发现自己提到“实体或值对象”。最值得注意的是,这些模型是域状态的模型。相比之下,域服务是无状态的,我认为域事件仅反映有关域如何处于当前状态的信息。
实体、值对象和领域事件。这些可能都包含或表示数据,而域服务仅定义行为。
域模型识别的所有对象。能够谈论一般的领域模型的一部分,而不是它之外的概念,这很有用。
有趣的是,甚至 Stack Overflow 的domain-object
标签都有一个令人困惑的定义:
域对象是用于处理模型层的域逻辑的对象。这些对象通常模拟现实生活中的真实(或虚拟)项目:Person、Post、Document 等。
最初的定义侧重于“处理领域逻辑”,倾向于“领域模型识别的所有对象”。然后这些示例倾向于“实体和值对象”。
DDD 强调定义明确、明确的无处不在的语言,这是有充分理由的。不应该以身作则吗?:)