其他分享
首页 > 其他分享> > 设计模式-》策略者模式

设计模式-》策略者模式

作者:互联网

例子

    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!");
        }

标签:CashSuper,return,策略,double,模式,money,new,设计模式,public
来源: https://www.cnblogs.com/icxldd/p/15804927.html