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