【发布时间】:2021-11-25 18:56:21
【问题描述】:
我是 DDD 新手,想清楚了解每个域对象的结构和作用:
-
聚合根:
1.1。客户端可以与域对象交互的唯一接触点,客户端不应该能够修改或创建新的实体或值对象白化聚合根? (是/否)
1.2。聚合根可以只包含值对象吗?例如用户根,据我所知,它只包含地址、电话、值对象的东西。那么当你的聚合根只包含值对象时,它是否是糟糕设计的标志?它应该只包含实体并通过实体与值对象交互吗?
-
实体:实体应该只包含值对象吗?或者它也可以包含其他实体?可以举个简单的例子吗?
-
值对象:我应该继续将每个原始类型封装在一个值对象中吗?我可以深入,将每个原始类型都作为值对象,例如:PhoneNumber 可以是字符串或包含国家代码、数字的值对象。同样的事情可以应用于所有其他原始类型值,例如姓名、电子邮件。那么在哪里画线呢?在哪里说“Ok I'm going to deep”,或者说深入是做 DDD 的正确方式?
-
工厂:我真的需要它们吗?我可以继续在域对象中编写一个静态方法,它更准确地知道如何构造它,我做错了吗?
很抱歉问了这么长的问题,但尽管继续阅读,我还是觉得有点失落,如果你能帮助我,我会很高兴。
【问题讨论】:
标签: domain-driven-design entities aggregateroot value-objects