有一个服务可以与Customer实体一起使用。
Service已经实现了一个返回CustomerDTO的GetCustomer方法。
服务必须实施方法来更改客户的电话,地址,……
您的WCF服务位于应用程序层中,因此每个用例都应该有一个单独的方法。你在这里明显有3个用例:
Phone
Address
SalesManager
Discount
所以你的服务应该暴露3种方法。这些方法中的每一种都不仅需要更新 Customer 实体,它必须首先检查权限。如果你尝试用1种方法实现它,你最终会得到很多 if s和行为不清楚。例如,如果销售经理尝试更改,该怎么办 Discount 和 Phone ?忽略了 Phone ?抛出异常?
Customer
if
每种方法都应使用不同的DTO,仅包含该方法所需的属性。 (顺便说一句,你可以在类名中将'DTO'改为'Command' - 例如 ChangeCustomerDiscountCommand 。看起来比'DTO'更好。
ChangeCustomerDiscountCommand
如果您使用单个DTO,那么客户端会感到困惑(为什么课堂上还有其他属性?如果我将它们留空会怎么样?如果我更改它会怎么样?等等)