我正在组建一个新系统,我想为它提供一个丰富的域。但是,我被困在一个我想了解更多的小细节上。
假设我有一个客户类,您实际上在哪里保留客户实体或聚合根?
应该是有持久化知识的客户类吗?
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
myCustomer.Save()
在这种情况下,我需要将我的客户存储库传递给客户类(通过工厂或某些注入)。请注意,我在 Eric Evens 的 DDD 书中找不到一个很好的例子。
另一种方法是让客户不知道持久性
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
CustomerRepository repository = new CustomerRepository();
repository.Save(myCustomer);
另外我想我可以有一个服务类,像这样一起完成这一切:
AddCustomerService service = new AddCustomerService(CustomerRepository repository)
service.AddCustomer(myCustomer);
只是一点点说明:如果我实际上没有保存在客户类中,我发现我的客户类只不过是属性,可能需要一点验证,但仅此而已。没有真正的行为。行为被移动到客户端使用的服务类或存储库......