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

    1.定义
    所谓策略模式,就是封装了一组相关算法,算法之间彼此可以相互替换,将行为从使用它的客户端抽离出来,封装变化。
    2.场景
    客户在处理相关业务的时候,不同的场景下会有不同的算法处理逻辑,不同的算法之间只是行为不同,可以在运行时指定
    对应的算法。

    3.类图


    4.代码

    /// <summary>
        /// 策略接口
        /// </summary>
        public interface IStrategy
        {
            void Cal();
        }
     public class ConcreteStrategyA:IStrategy
        {
            public void Cal()
            {
                //操作
            }
        }
     public class ConcreteStrategyB:IStrategy
        {
            public void Cal()
            {
                //操作
            }
        }
    public class Context
        {
            public IStrategy strategy;
    
            public Context(IStrategy s)
            {
                this.strategy = s;
            }
    
            public void setStrategy(IStrategy s)
            {
                this.strategy = s;
            }
    
            public void Perform()
            {
                this.strategy.Cal();
            }
        }


    4.理解
    策略模式应用了设计原则的开闭原则,软件实体应该对修改关闭,对扩展开放,增加算法的时候,直接扩展相关的接口实现算法类即可
    ,不用修改原来的代码。 同时也应用了接口隔离原则,针对接口编程,不针对实现。
    5.优点、缺点
    优点:
    1.增加算法的时候不用修改客户端调用逻辑,只增加一个类就可以
    2.避免多重条件判断(在其他模块中决定)

    缺点:
    1.所有的算法类都需要对外暴露,上层模块要知道都有哪些策略,然后才可以决定采用哪种,可以通过工厂模式、代理模式和享元模式进行修正。

  • 相关阅读:
    NOIp前做题记录
    长链剖分学习笔记
    Java可重入锁AQS 和 CAS原理
    Shiro企业级实战详解,统一的Session管理。
    Jdk动态代理
    NIO实现的客户端和服务端
    Java编写生成mybatis xml文件、Dao文件、实体类和DTO
    [FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解
    Linux系统手动安装Firefox浏览器
    各种版本的firefox 下载
  • 原文地址:https://www.cnblogs.com/niuge/p/9145665.html
Copyright © 2011-2022 走看看