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

    策略模式:它定义了算法家族,分别封装起来,让他们可以相互转换,此模式让算法的改变不会影响到使用算法的客户

    策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合

    具体基本代码如下

    namespace 策略模式
    {
        class Program
        {
            static void Main(string[] args)
            {
                Context context;
    
                context = new Context(new ConcreteStrategyA());
                context.ContextInterface();
    
                context = new Context(new ConcreteStrategyB());
                context.ContextInterface();
    
                context = new Context(new ConcreteStrategyC());
                context.ContextInterface();
    
                Console.Read();
            }
        }
    
        //抽象算法类
        abstract class Strategy
        {
            //算法方法
            public abstract void AlgorithmInterface();
        }
        //具体算法A
        class ConcreteStrategyA : Strategy
        {
            //算法A实现方法
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法A实现");
            }
        }
        //具体算法B
        class ConcreteStrategyB : Strategy
        {
            //算法B实现方法
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法B实现");
            }
        }
        //具体算法C
        class ConcreteStrategyC : Strategy
        {
            //算法C实现方法
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法C实现");
            }
        }
        //上下文
        class Context
        {
            Strategy strategy;
    
            public Context(Strategy strategy)
            {
                this.strategy = strategy;
            }
            //上下文接口
            public void ContextInterface()
            {
                strategy.AlgorithmInterface();
            }
        }
    
    }
    

      

  • 相关阅读:
    Ubuntu出现无法定位软件包,更换源
    VScode支持Python
    Tp3.2 组合查询
    PHP 年月日,转为标准时间
    常用查询之按时间范围查询,按名称查询
    微信发起支付步骤
    拷贝 最近 一段时间生成的文件
    获取调查问卷统计
    Tp3.2 实现一个字段的或查询
    MFC DDX_Control 与 DDX_Text
  • 原文地址:https://www.cnblogs.com/happygx/p/8392596.html
Copyright © 2011-2022 走看看