考虑以下示例:
例如:
OrderA 必须有一笔交易。
OrderB 必须有两笔交易。
OrderC 可以有 n 笔交易。
当我们更新订单的价值时,我们需要根据算法特定的订单类型来计算交易的价值。
我们如何为这种情况设计模型?我们可以在aggregateRoot中使用继承还是我们应该使用组合?例如 ?
/// <summary>
/// AggregateRoot
/// </summary>
public abstract class Order
{
protected ISet<Transaction> _transactions;
public IEnumerable<Transaction> Transactions
{
get { return _transactions; }
}
public abstract OrderType OrderType { get; }
public decimal? Value { get; protected set; }
public void SetValue(decimal? value)
{
Value = value;
UpdateReleatedTransaction();
}
protected abstract void UpdateReleatedTransaction();
}
public class OrderA : Order
{
public OrderA()
{
_transactions.Add(new Transaction(this)); …Run Code Online (Sandbox Code Playgroud)