使用可重用的业务对象时,在构建视图模型时什么是最佳实践?
我们使用调用的对象Builder
来构建视图模型。每个视图逻辑单元(订单,用户等)的一个构建器,其中每个单元可以包含许多不同的视图模型(订单包含摘要,订单行等)。
建造者可以通过一个或多个标准业务对象提取数据,以建立视图模型。
在视图模型中使用业务对象/模型时,什么被认为是更好的做法?
方法1
允许在视图模型中使用业务对象?
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary();
obModel.Order = obOrder;
return obModel;
}
}
//View model
public class OrderSummary
{
public Some.Business.Logic.Order Order;
//Other methods for additional logic based on the order
//and other properties
}
方法2
仅从业务对象中获取必要的数据
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary()
{
OrderNum = obOrder.OrderNum,
NumOrderLnes = obOrder.NumOrderLines,
}
return obModel;
}
}
//View model
public class OrderSummary
{
public int OrderNum;
public int NumOrderLines
//Other methods for additional logic based on the order
//and other properties
}
我可以看到两者的优点和缺点,但是我想知道是否存在一种公认的方法?在方法1中,模型之间没有代码重复,但是会创建对业务逻辑的依赖。在方法2中,您仅获取视图所需的数据,但是在模型周围重复了代码。