我正在使用 DDD 模式开发应用程序。
我Invoice
在领域层上课。
public class Invoice
{
List<InvoiceLine> list = new List<InvoiceLine>();
public DateTime Date { get; set; }
public Customer Customer { get; set; }
public decimal GrandTotal
{
get
{
// Simplified grand total.
// It's actually include tax and discount to calculate.
decimal total = 0m;
foreach(InvoiceLine line in Lines)
total += line.LineTotal;
return total;
}
}
public IEnumerable<InvoiceLine> Lines
{
get { return list; }
}
public void AddLine(InvoiceLine line)
{
lines.Add(line);
}
}
我正在使用 mvvm 模式,所以我也有一个视图模型来编辑发票。我的问题是我应该将业务逻辑放在哪里来计算 GrandTotal,以便域和表示上的业务逻辑相同?
我应该将代码从域复制到演示文稿(Invoice
到InvoiceViewModel
)吗?或者提供一个域和演示都可以使用的服务?