public static void Run(string[] args) { // Single Dispatch Vehicle vehicle = new Vehicle(); Vehicle benz = new Benz(); Sales sales = new Sales(); Console.WriteLine("Visitor Single Dispatch Demo:"); Console.WriteLine($"Sales: The rate for common vehicle is: {sales.GetDiscountRate(vehicle)}"); Console.WriteLine($"Sales: The rate for benz is: {sales.GetDiscountRate(benz)}"); // Double Dispatch (fail) SalesManager salesManager = new SalesManager(); Console.WriteLine("Visitor Double Dispatch Demo(失敗的例子):"); Console.WriteLine($"SalesManager: The rate for common vehicle is: {salesManager.GetDiscountRate(vehicle)}"); Console.WriteLine($"SalesManager: The rate for benz is: {salesManager.GetDiscountRate(benz)}"); }
public override double GetBaseDisountRate(SalesManager sales) { return(0.06 * 1.1); }
public virtual double GetBaseDisountRate(SalesManager sales) { return(0); }