If you are using C # 4.0, you can change the parameters and make basePrice optional:
public abstract class SalesStrategy { public abstract double GetPrice(double saleAmount, double basePrice = 0d); } public class AmountOffSale : SalesStrategy { public override double GetPrice(double salesAmount, double basePrice) { return basePrice - salesAmount; } } public class FixedPriceSale : SalesStrategy { public override double GetPrice(double salesAmount, double basePrice = 0d) { return salesAmount; } }
The value can be performed as follows:
FixedPriceSale fixedPrice = new FixedPriceSale(); ... fixedPrice.GetPrice(salesAmount);
Note that the AmountOffSale basePrice parameter is optional, which means the following will not compile:
AmountOffSale amountOffSale = new AmountOffSale(); ... // No overload for method 'GetPrice' takes 1 arguments amountOffSale.GetPrice(salesAmount);
robyaw
source share