我对DDD非常陌生,并且一如既往,当您将自己的头围绕在有趣的概念中时,您将不可避免地触及到某个点或某种情况,这会让您不确定如何随之产生的结果学会应该面对某些问题应用。DDD - 从实体中派生价值对象
假设您有两个关于用户的不同日期:DateOfBirth
和DateOfRegistration
。将它们分别作为两个不同的值来实现是非常有意义的。这很简单,很棒。
现在,我们假设在一个应用程序Users
可以参与Projects
。一个项目可以有多个members
和一个创建(拥有)它的用户。
因此ProjectMembers
和ProjectOwner
都是Users
。
有两种方式Project
来实现这个功能:
答:强类型 - 创建类ProjectMember
和ProjectOwner
然后“行为”的值对象。要么让他们作为包装工作,要么甚至扩展User
类。
B:懒惰的方法 - 根据期望的行为/期望简单地命名方法和参数,并推动User
周围的对象。
在我看来,以下B意味着滴DDD的原则。
以下A会导致数十个班级,其中许多班级不会做任何事情,但会强制执行类型安全。
我很困惑,因为与简单的日期相比,用户是实体甚至聚合根,同时更复杂。
是A,B还是有第三种选择?