我被分配了一个非常简单的项目作为考试,我有想法使用领域驱动设计来开发它。
你们中的许多人可能会说该应用程序非常简单,使用存储库和 UoW 只是浪费时间,您可能是对的,但我认为这是一个学习更多东西的机会。
该应用程序是一个“机票”系统,从下图中您很可能猜到它的功能。
问题是我不确定我是否正确地分离了聚合体及其根。
编辑:
我介绍了数据模型,以便任何人都可以轻松发现整个功能。
问题是,从员工的角度来看,“Rad”所说的航班封装了整个功能,并且是聚合根。
然而从管理员的角度来看,航班不关他的事。
他只是想更新或添加新的飞机公司等。
那么就有了一个新的聚合根,即 Airplane,它将 Airplane 座位(实体)、座位类型(值对象)和公司(实体)封装为新的聚合。
- 这往往让我感到困惑,因为我在另一个聚合(航班聚合)中有一个聚合根(飞机)。
- 由于聚合根被认为是“核心”实体,如果没有它,它内部的其他实体将没有任何意义,所以我正在考虑公司。我的结论是,即使没有飞机,公司也有意义。
为了解释更多,我想到了这样一种情况:管理员想要插入一个新公司,或者想要首先加载一个公司,然后加载它的飞机。
DDD 原则规定聚合内的任何实体只能从根本身加载。
所以这就是混乱之处。
嗯,聚合和聚合根在哪里?这只是数据模型...而不是域模型。
Aggregate 是聚集在一起的一组项(Domain Object),Aggregate Root 是实体根...(如果考虑 Flight Aggregate 封装了 Seats、Location...Aggregate Root 应该是 Flight 实体)。
[Edit]
你必须忽略那些执着的。在您的应用程序中,您可以有许多聚合,这取决于您的域,也许航班是一个聚合,而公司是另一个聚合;),不要混淆实体和聚合...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)