我有这个域模型(简化的),它表示具有基本价格的产品,并附加了许多供应商,这些供应商提供相对于基本价格的特定折扣百分比:
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 (稳定公式)的最佳位置是什么,它是否应该理想地位于通过构造函数注入提供对父CarDerivative的引用的SupplierDiscount上?
在你看来,一个不稳定的公式应该放在哪里?比如SupplierPriceForDerivative (基础+交付+税务+++)?
发布于 2009-09-28 11:45:00
我对此的下意识反应是,折扣应该是政策。每个DiscountPolicy可能如下所示:
public interface IDiscountPolicy
{
decimal GetDiscountedPrice(CarDerivative car);
}您的SupplierDiscount可能是这种策略的简单实现,而不稳定的公式可能是在更复杂的类中实现的。
我认为最安全的做法是将实体和策略分开,这样您就可以彼此独立地改变它们。
https://stackoverflow.com/questions/1485224
复制相似问题