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

        /// <summary>
        /// 收入算法的基本结构
        /// </summary>
        public interface Income
        {
             double TotalCount();
        }
    
        /// <summary>
        /// 一种收入算法
        /// </summary>
        public class FirstLevelIncome:Income
        {
            private double p;
            private int total;
    
            public FirstLevelIncome(double p, int total)
            {
                this.p = p;
                this.total = total;
            }
    
            #region Income Members
    
    
            public double TotalCount()
            {
                return total * p;
            }
    
            #endregion
        }
    
        /// <summary>
        /// 客户需要的上下文
        /// </summary>
        public class CashContext
        {
            public Income GetStrategy(int type)
            {
                switch (type)
                {
                    case 300:
                        Income income = new FirstLevelIncome(0.8, type);
                        return income;
                }
                return null;
            }
        }
    
        public class TestIncome
        {
            public static void Run()
            {
                int total = 300;
                double realTotal=0;
                //此处根据收入的不同,可以得到不同的算法。
                //它感觉不到算法的变化
                Income myIncome = new CashContext().GetStrategy(total);
                realTotal = myIncome.TotalCount();
                Console.WriteLine(realTotal.ToString());
            }
        }
    

      

    策略设计模式:
    他把各种算法封装起来,他们之间可以相互替换,当算法发生变化的时候,不会影响使用它的客户。

  • 相关阅读:
    Linux内存初始化
    linux PCI设备初始化过程
    Linux网络地址转换分析
    Linux内核中流量控制
    IPSEC实现
    ip_conntrack 实现
    module_init宏解析
    IP隧道基础研究
    IPV6介绍
    Golang的接口
  • 原文地址:https://www.cnblogs.com/363546828/p/3364680.html
Copyright © 2011-2022 走看看