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!");
            }
    
  • 相关阅读:
    Linux下安装Apache2.4.43踩坑记录
    网络代理条件下配置git
    docker存储驱动的选择
    Python列表排序
    解决apache无法启动No space left on device
    Flask匹配url使用正则表达式
    Web安全-客户端脚本安全
    springboot中的一些好用注解
    基于cdn方式的vue+element-ui的单页面架构
    干货网站
  • 原文地址:https://www.cnblogs.com/icxldd/p/15804927.html
Copyright © 2011-2022 走看看