域建模帮助 - 产品和供应商

时间:2009-09-28 03:08:34

标签: domain-driven-design

我有这个域名模型(简化版),它代表一个具有基本价格的产品,并附有众多供应商,这些供应商提供基本价格的特定折扣百分比:

public class CarDerivative
{
    public string Name { get; set; } e.g. StackOverflow Supercar 3.0L Petrol
    public double BasicPrice { get; set; } e.g. 10,000
    public double Delivery { get; set; } e.g. 500
    public IList<SupplierDiscount> { get; set; } // has 3 various suppliers
}

public class SupplierDiscount
{
    public string SupplierName; { get; set; }
    //public SupplierInformation SupplierDetails { get; set; } // maybe later
    public double BasicDiscount { get; set; } 
    public double DeliveryDiscount { get; set; } // e.g. 0.10 = 10%
}

现在,我正在考虑应该采取哪些措施:

例如,BasicDiscountedPrice(稳定公式)最佳位置,理想情况下它应该位于SupplierDiscount上吗?它通过构造函数注入提供了对父CarDerivative的引用?

您认为不稳定的公式应该在哪里?例如SupplierPriceForDerivative(基本+交付+税++)?

1 个答案:

答案 0 :(得分:0)

我对此的下意识反应是折扣应该是政策。每个DiscountPolicy可能如下所示:

public interface IDiscountPolicy
{
    decimal GetDiscountedPrice(CarDerivative car);
}

您的SupplierDiscount可能是此类策略的简单实现,而您的不稳定公式可能会在更复杂的类中实现。

我认为将实体和政策分开是最安全的,这样您就可以彼此独立地改变它们。