我对DDD很陌生,所以请容忍我。
我有一个聊天室和聊天室里的人。聊天室里的人需要提议一个他们想要一个网络研讨会的日期。我们有一个商务规则,我们需要至少有3个人在网络研讨会上才能举行网络研讨会,而每个对网络研讨会感兴趣的人都需要说他们已经准备好向某人求婚了。
我想到了两个解决方案
解决方案1:
使聊天室成为聚合的根
在聊天室,ProposeDate(Person,Date)上有一个功能,建议约会。
在这个解决方案中,我将验证聊天室上的商务规则,并在person实体上设置日期。
这个解决方案的一个问题是,我们可以从域中的任何地方调用person实体,而无需引用聊天室中的验证,是否应该将每个人的建议日期从person实体中实际删除,并设置在聊天室本身,这样就不能设置呼叫聊天室实体?
解决方案2
使人成为聚合根
网上有ProposeDate(约会).and的人会问聊天室,我能提议这个日期吗?这个解决方案的问题是,我相信它会使“不问”原则失效。
如果我搞错了,还有别的解决办法,请告诉我。
人们不得不互相提议/接受/拒绝那个日期。
发布于 2015-02-13 07:07:03
当出现两个对象似乎相互依赖的情况时,有时解决方案是将依赖项重构为第三个对象。在这种情况下,为什么不使用WebinarVote对象和propose(ChatRoom, Person)方法呢?
投票结束后,您的Webinar (或您的体系结构中现在调用的任何内容)服务对象将迭代WebinarVotes,以确定哪些are研讨会正在进行,哪些没有。
https://softwareengineering.stackexchange.com/questions/272286
复制相似问题