嗨,我的任务是重构一部分代码,以使其符合开放/封闭原则。我设法在两种方法中应用了策略模式,但在一种方法中,我不知道应该如何进行。
public ProductPriceCalculator(Product product)
{
this.product = product;
buyerStrategy = new BuyerStrategy();
discountStrategy = new DiscountStrategy();
}
public Price CalculatePrice()
{
price = new Price();
decimal productPrice = product.BasePrice +
(product.BasePrice * product.Addition);
decimal TVA = CalculateTVA();
price.ProductPrice = productPrice*TVA;
decimal discount = CalculateDiscount(price.ProductPrice);
price.Discount = price.ProductPrice * discount;
price.ProductPriceWithDiscount = price.ProductPrice - price.Discount;
price.TransportPrice = product.Transport.GetTransportPrice();
price.TotalPrice = price.ProductPriceWithDiscount + price.TransportPrice;
return price;
}
在这种情况下,此方法通过使用类中的方法初始化对象。就目前而言,此方法不会关闭以进行修改,因为如果在某些时候我必须向 Price 添加另一个属性,我将不得不回到这里来初始化它。
如何正确构建此代码?