1、基本概念

在策略模式中,一个类的行为或算法可以在运行时更改。我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

2、UML图

3、使用场景

  • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为;
  • 一个系统需要动态地在几种算法中选择一种(调用端需要明确知道所有策略);
  • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

4、模式优点

  • 算法可以自由切换
  • 避免使用多重条件判断
  • 扩展性良好

5、简单实现

    /// <summary>/// 策略抽象类/// </summary>public abstract class Stretagy{public abstract double Calculate(double num1, double num2);}/// <summary>/// 加法策略类/// </summary>public class AdditionStretagy : Stretagy{public override double Calculate(double num1, double num2){return num1 + num2;}}/// <summary>/// 除法策略类/// </summary>public class DivisionStretagy : Stretagy{public override double Calculate(double num1, double num2){return num1 / num2;}}/// <summary>/// 策略执行类(面向抽象,稳定)/// </summary>public class StretagyContext{private Stretagy _stretagy; //通过抽象类声明私有字段public StretagyContext(Stretagy stretagy) //通过抽象类定义变量{_stretagy = stretagy;//里式替换(子类换父类)}public double Calculate(double num1, double num2){return _stretagy.Calculate(num1, num2);}}/// <summary>/// 调用端/// </summary>public static class Program{static void Main(string[] args){var context = new StretagyContext(new AdditionStretagy());Console.WriteLine($"1943+1227={context.Calculate(1943, 1227)}");Console.ReadKey();}}

6、实际应用

(待更新...)

设计模式之禅——策略模式(Strategy Pattern)相关推荐

  1. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  2. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了"工厂模式"."策略模式" ...

  3. 8.6 GOF设计模式四: 策略模式… Strategy Pattern

    策略模式- Strategy Pattern  在POS系统中,有时需要实行价格优惠, 该如何处理?  对普通客户或新客户报全价  对老客户统一折扣5%  对大客户统一折扣10%  注:课件 ...

  4. 二十四种设计模式:策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 介绍 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例 有一个Message实体类,对它的操 ...

  5. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  6. 设计模式实战-策略模式(Strategy Pattern)

    0 联系我 图片标题 1.Q群[Java开发技术交流]:jq.qq.com/?_wv=1027&a- 2.完整博客链接:www.shishusheng.com 3.知乎:www.zhihu.c ...

  7. 锈才学设计模式之 —— 策略模式(Strategy Pattern)

    锈才学设计模式之  -- 策略模式 策略模式:把功能提供者单独封装成类,使它们可以互相替换使用,让功能提供者独立于使用者(调用者). 说明: 在面向对象编程中,我们尽量将功能(类)设计成复用,以符合O ...

  8. 关于设计模式——策略模式-Strategy Pattern

    文章目录 1 策略模式 1.1 模拟鸭子 1.2 设计原则 1.3 整合行为 1.4 模拟鸭子代码的代码 1.5 动态设定行为 1.6 重新查看整体 1.7 继承和组合 1.8 总结 1.9 优劣期间 ...

  9. 设计模式——策略模式( Strategy Pattern )

    写代码超过千行,自定义类10个以上,往往写着写着就觉的乱,最终决定抽空补习下设计模式方面的知识.本来AS3出了本关于设计模式的书的,国人也翻译了.我同事也早早买了一本,但前些天我借来看了几页,翻译的太 ...

最新文章

  1. Android 中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)...
  2. 构建微服务时的三大常见错误
  3. 数据中设计中的范式与反范式
  4. 虚拟主机IIS防范入侵常见问答
  5. 追求极致,饮水思源——记旷视与计算机竞赛的故事
  6. OVERLAPPED结构与GetOverlappedResult函数
  7. flutter 如何判断在哪个页面_Agora 教程:构建你的第一个 Flutter 视频通话应用
  8. Tomcat 8.5 配置 SSL 证书
  9. php ajax loading图片居中显示,php-通过ajax框架加载漂亮照片
  10. 信号完整性分析大作业_Matplotlib数据可视化 amp; Pandas数据分析 综合实训大作业...
  11. 中国联通加快数据中心建设:全网机架数量超过32万架
  12. Copilot 自动编程AI工具
  13. 【android学习笔记:Webview与Js交互】网页生成的excel/pdf等文件通过webview下载保存
  14. jQuery-获取验证码
  15. 请收藏ANSYS Fluent电子风扇效能及噪音仿真攻略
  16. cat 查看声卡播音、卡录音状态
  17. python 堆叠柱状图,Python可视化matplotlib12-垂直|水平|堆积柱形图详解
  18. java计算机毕业设计广东省梅州市宇恒节能科技有限公司(附源码、数据库)
  19. 网站安全不可忽视--一个收费网站的破解过程
  20. JAVA实现FTP文件传输

热门文章

  1. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧
  2. glassfish任意文件读取漏洞
  3. Scrapy 提示错误 DEBUG: Crawled (403) <GET https://book.douban.com/top250> (referer: None)
  4. 两层全连接神经网络实现手写数字识别
  5. Photoshop-滤镜库的详细使用方法
  6. AR眼镜——Vuzix Blade填坑笔记
  7. java枚举类型初始化
  8. 入手评测 外星人M15 R5 怎么样
  9. macOS系统中:Docker的安装
  10. phpexcel 设置批注_Phpexcel 实例