zoukankan      html  css  js  c++  java
  • 设计模式学习笔记策略模式

    策略模式:Strategy,它定义了算法家族,分别封装起来,让他们之间可以相互替换,让算法的变化不会影响到算法使用者

    1.定义抽象算法

        /// <summary>
    /// 抽象算法类
    /// </summary>
    abstract class Strategy
    {
    /// <summary>
    /// 算法方法 接口定义
    /// </summary>
    public abstract void AlgorithmInterface();
    }

    2.具体算法的实现

      /// <summary>
    /// 具体算法A
    /// </summary>
    class ConcreteStrategyA : Strategy
    {
    public override void AlgorithmInterface()
    {
    Console.WriteLine(
    "算法A的实现");
    }
    }
    /// <summary>
    /// 具体算法B
    /// </summary>
    class ConcreteStrategyB : Strategy
    {
    public override void AlgorithmInterface()
    {
    Console.WriteLine(
    "算法B的实现");
    }
    }
    /// <summary>
    /// 具体算法C
    /// </summary>
    class ConcreteStrategyC : Strategy
    {
    public override void AlgorithmInterface()
    {
    Console.WriteLine(
    "算法C的实现");
    }
    }

    3.调度类

        /// <summary>
    /// 承上启下的算法调用
    /// </summary>
    class Context
    {
    Strategy strategy;
    /// <summary>
    /// 传入具体策略对象
    /// </summary>
    /// <param name="strategy"></param>
    public Context(Strategy strategy)
    {
    this.strategy = strategy;
    }
    /// <summary>
    /// 根据策略对象的值判断调用的算法类
    /// </summary>
    public void ContextInterface()
    {
    strategy.AlgorithmInterface();
    }
    }

      客户端调用:

            /// <summary>
    /// 测试策略
    /// </summary>
    static void TestStrategy()
    {
    Context context;
    //策略A
    context = new Context(new ConcreteStrategyA());
    context.ContextInterface();
    //策略B
    context = new Context(new ConcreteStrategyB());
    context.ContextInterface();
    //策略C
    context = new Context(new ConcreteStrategyC());
    context.ContextInterface();
    Console.Read();
    }

      策略模式比较简单但是应用非常的多


  • 相关阅读:
    Eclipse和MyEclipse常出现的错误总结
    JS中的showModelDialog详解和实例
    form中的action,submit="return save()"以及ajax提交方法
    清除上传文件input标签中type="file"的value值
    上传文件时并顺便将文件压缩时出现文件名乱码以及文件内容乱码解决方案
    python 知识
    centos 安装docker
    docker 配置国内镜像
    git 操作命令
    react build dist发布nginx时的配置
  • 原文地址:https://www.cnblogs.com/jqbird/p/2140133.html
Copyright © 2011-2022 走看看