我有这个域名模型(简化版),它代表一个具有基本价格的产品,并附有众多供应商,这些供应商提供基本价格的特定折扣百分比:
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(基本+交付+税++)?
答案 0 :(得分:0)
我对此的下意识反应是折扣应该是政策。每个DiscountPolicy可能如下所示:
public interface IDiscountPolicy
{
decimal GetDiscountedPrice(CarDerivative car);
}
您的SupplierDiscount可能是此类策略的简单实现,而您的不稳定公式可能会在更复杂的类中实现。
我认为将实体和政策分开是最安全的,这样您就可以彼此独立地改变它们。