【发布时间】:2018-04-27 12:58:13
【问题描述】:
我正在努力理解如何通过让我的域实体有自己的行为来将我的网站重构为更简洁的代码。
我希望我已经设法在这张图中描述了我的问题:
A 是我目前的 Web 应用项目设计,而 B 是我的目标设计。
我正在尝试将我当前 BL 中的所有逻辑插入到我的实体中,以便如下代码行:var customer = new CustomerLogic().GetCustomer(id);
会变成:var customer = new Customer(id);
或者,var customer = Customer.Get(id);
当我看到多态情况时,这一点就更加明显了。
问题在于,在我当前的设计 (A) 中,实体只是被使用,所以所有项目都引用它,未来的设计 (B)实体必须具有对较低层的引用。
但由于我还希望我的 DAL 将我的实体交付回调用客户端,所以我得到了一个循环引用。
我当前的设计使我的代码比面向对象更程序化,我想改变它。
那么,如何在维护 DDD 的同时解决这个循环引用?
【问题讨论】:
标签: architecture domain-driven-design n-layer