有一个客户端服务应用程序使用WCF构建面向服务的体系结构,DDD用于在服务中构建域层。
在域层中,有一个域对象Customer
,其方法为:
Customer.Relocate(Phone, Address)
Customer.Assign(SalesManager)
Customer.Make(Discount)
由于此域层在WCF服务中使用,因此使用服务方法创建CustomerService
:
CustomerService.Relocate(CustomerID, PhoneDTO, AddressDTO)
CustomerService.Assign(CustomerID, SalesManagerID)
CustomerService.MakeDiscount(DiscountDTO)
这些方法验证参数,请求域对象和调用域对象方法以应用业务逻辑。
问题在于它看起来像是巨大的代码重复,因为WCF服务方法几乎(90%)与带有参数的域层方法相同,用ID和DTO表示。
答案 0 :(得分:2)
这是设计的。 使用DDD,域逻辑与应用程序逻辑分开。因此,没有代码重复,因为这两个层有不同的职责。
可能可能重复的代码是验证规则:它们通常在域层中用于强制执行不变量,在服务层中用于执行输入验证。如果您的应用程序出现这种情况,则应重构代码以删除重复并使验证规则可重用。另请参阅this answer。
如果您的软件解决的问题非常简单,以上仍然感觉像重复工作,DDD可能不是正确的方法。