我最近开始学习领域驱动设计,到目前为止,它似乎对我的团队当前的项目有很大的帮助。我遇到了一个小问题,虽然实际上确定了我们项目中的域。
在我的引流术之后,我得到了这样的结果:
我有三个领域: A、B和C,用于不同的业务领域。然而,对于每一个我需要跟踪当前数据以及为未来制定计划。这导致我添加了一个计划域,但我没有看到一个明确的方法来区分规划和其他领域。无论是A、B和C,都需要有详细的规划知识,反之亦然。
例如:假设领域A是“库存”。该实现包含诸如ItemsAdded和ItemsRemoved之类的消息,它跟踪各种产品的数量。然后,如果我想要规划未来数量的项目,我需要添加类到模型,这将允许我联系未来的产品信息与各种时间窗口。这种感觉就像一个新的领域,除了相同的规划和时间窗口逻辑也适用于领域B和C。
本质上,我有一个横切域。我觉得我一定是看错了。
也许我实际上有6个域,其中3个使用了一个库?
发布于 2014-07-14 14:18:04
横切域可以是共享核域的症状.这在埃文斯和弗农的书中都有。
但是要小心,这个共享--内核域不应该由功能灵感来创建,而是一个内容与其他领域相关的域--而不是因为它对这两个领域都有帮助。
创建一个实现功能角色的共享内核域是很有诱惑力的,因此使系统紧密耦合而不是松散耦合。对于源代码可伸缩性而言,这是一个大的不-不。
发布于 2014-07-09 06:26:35
是什么阻止您创建一个“规划域”,并让其他3依赖于此域?这在库/模块中似乎是相当正常的依赖关系。
发布于 2014-07-14 14:37:07
当然,我不理解你的领域与足够的信息,但计划的声音对我来说,就像一个领域完全脱离你的系统其他部分。
该域具有规划事物的操作/规则/行为,例如,您可以从库存规划项目,但从计划的角度来看,这不是“库存项”,而是类似于"planItems“的内容。您可能不需要库存项目的所有信息来进行计划,为什么要在计划域中使用这个库存项类?
对我来说,这是理解DDD并在有界上下文中进行适当分离的关键之一,相同的“事物”可以与不同的域完全不同,您可以在库存域中有一个InventoryProduct,在规划域中有一个PlannedProduct或PlannedItem,这个对象可以具有相同的id,或者可能共享非常小的字段集(标识信息,比如id、名称等),但是有完全不同的操作集和完全不同的数据,在另一种情况下,库存需要的数据是计划需要的数据。
https://softwareengineering.stackexchange.com/questions/247333
复制相似问题