zoukankan      html  css  js  c++  java
  • 设计模式》策略者模式

    例子

    • 对一个价钱做不同策略;原价,打折,返利
        public abstract class CashSuper
        {
            public abstract double AcceptCash(double money);
        }
    
        public class NormalCash : CashSuper
        {
            public override double AcceptCash(double money)
            {
                return money;
            }
        }
    
        public class CashReturn : CashSuper
        {
            private double _moneyConditation;
            private double _moneyReturn;
    
            public CashReturn(double moneyConditation, double moneyReturn)
            {
                _moneyConditation = moneyConditation;
                _moneyReturn = moneyReturn;
            }
    
            public override double AcceptCash(double money)
            {
                if (money >= _moneyConditation)
                {
                    return money - _moneyReturn;
                }
                else
                {
                    return money;
                }
            }
        }
    
        public class CashRebate : CashSuper
        {
            private double _moneyRebate;
    
            public CashRebate(double moneyRebate)
            {
                _moneyRebate = moneyRebate;
            }
    
            public override double AcceptCash(double money)
            {
                return money * _moneyRebate;
            }
        }
    
        public class MoneyContext
        {
            private CashSuper _cashSuper;
    
            public MoneyContext(CashSuper cashSuper)
            {
                _cashSuper = cashSuper;
            }
    
            public double GetMoney(double money)
            {
                return _cashSuper.AcceptCash(money);
            }
        }
    
            static void Main(string[] args)
            {
    
    
    
                var normal = new MoneyContext(new NormalCash());
                Console.WriteLine($"正常:{normal.GetMoney(50)}");
    
                var rebate = new MoneyContext(new CashRebate(0.5));
                Console.WriteLine($"打折:{rebate.GetMoney(50)}");
    
                var return_ = new MoneyContext(new CashReturn(20, 10));
                Console.WriteLine($"返利:{return_.GetMoney(50)}");
    
    
                Console.WriteLine("Hello World!");
            }
    
  • 相关阅读:
    字幕文件处理(2)
    使用RelativeLayout控制WebView以及Bottom按钮的位置
    使用ActionBar Tab
    使用自定的Adapter绑定ListView/GridView数据
    Mono.Android 基础
    Azure自动化实例: 复制blog用于备份
    使用C#程序处理PowerPoint文件中的字符串
    SQL语言Select经典语句
    Row_Number() and Rank() in SQL
    C# Main函数中调用异步方法的2种实现
  • 原文地址:https://www.cnblogs.com/icxldd/p/15804927.html
Copyright © 2011-2022 走看看