コード例 #1
0
ファイル: Visitor.cs プロジェクト: alu243/DoubleDispatch
        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)}");
        }
コード例 #2
0
ファイル: Visitor.cs プロジェクト: alu243/DoubleDispatch
 public override double GetBaseDisountRate(SalesManager sales)
 {
     return(0.06 * 1.1);
 }
コード例 #3
0
ファイル: Visitor.cs プロジェクト: alu243/DoubleDispatch
 public virtual double GetBaseDisountRate(SalesManager sales)
 {
     return(0);
 }