我正在使用Web服务,该服务接收一个扁平化的DTO来表示订单。我需要将我的业务表示转换为这个扁平化表示。
以下是对象:
DTO:
以下是对象:
DTO:
业务对象:
让Order自己知道如何表示自己作为DTO:
OrderDTO dto = order.ToDto();
但这显然有一个缺点,即业务实体知道数据表示。通过某种类型的转换器完成:
OrderDTO dto = Convertor.Convert(order);
.
但转换器代码看起来会像这样:
if (order is OnlineOrder)
{
dto.Email = ((OnlineOrder)order).Email;
} 这显然很糟糕。
public abstract class Order implements IOrder {
除了层次结构底部的子类之外,声明所有子类为抽象类。这样,您将能够为所有缺失字段提供getter和setter。然后,您将能够创建一个createOrder方法,该方法将从绑定接口的getter复制所有字段到DTO的setter中。 - Rick Garcia