当前位置: 首页 > news >正文

设计模式-策略模式-使用

设计模式-策略模式-CSDN博客

  1. 系统中有很多类,它们之间的区别仅在于它们的行为。策略模式可以定义一系列的算法,并将它们一个个封装起来,使它们可以相互替换。这样,算法就可以独立于使用它的客户而变化。
  2. 需要使用算法的不同变体。当算法有多种实现方式,并且需要根据不同的情况选择使用不同的算法时,可以使用策略模式。
  3. 算法使用客户不应该知道的数据。策略模式可以避免暴露复杂的、与算法相关的数据结构,保证算法的安全性和封装性。
  4. 一个类定义了多种行为,并且这些行为在类的操作中以多个条件语句的形式出现。使用策略模式可以避免使用大量的if-else语句,提高代码的可读性和可维护性。

具体来说,策略模式在以下场景中得到了广泛的应用:

  1. 计费系统:对于不同用户类型和消费金额,系统可以采用不同的计费方式。通过策略模式,可以定义不同的计费策略,并在运行时根据需要选择合适的策略。
  2. 游戏开发中的角色技能系统:不同角色拥有不同的技能,游戏可以根据角色选择相应的技能进行攻击或防御。策略模式可以定义不同的技能策略,并在游戏中根据需要动态切换。
  3. 商城促销活动:商城可以根据不同的促销活动采取不同的优惠方式,如打折、满减等。通过策略模式,可以定义不同的促销策略,并在促销活动中动态应用。

与简单工厂模式的区别主要体现在以下几个方面:

  1. 核心思想不同:简单工厂模式的核心是创建对象,它将所有对象的创建逻辑集中在一个工厂类中。而策略模式的核心是定义一系列可互相替换的算法,它关注的是算法的使用和切换。
  2. 关注点不同:简单工厂模式关注的是对象的创建过程,它将对象的创建与使用分离开来,简化了对象的创建过程。而策略模式关注的是如何使用这些对象,特别是如何根据不同的条件选择合适的算法或策略。
  3. 灵活性不同:简单工厂模式在添加新的对象类型时需要修改工厂类的方法,这违反了设计模式中的开闭原则(OCP)。而策略模式则通过定义接口和策略类来实现算法的多样性,可以在不修改已有代码的情况下添加新的策略。
  4. 代码结构不同:简单工厂模式通常包含一个工厂类和一个或多个产品类,工厂类负责创建产品类的实例。而策略模式则包含策略接口、具体策略类、上下文环境和客户端等部分,策略接口定义了一系列算法的公共接口,具体策略类实现了这些接口中的算法,上下文环境负责根据条件选择合适的策略,并将其应用于客户端。
http://www.lryc.cn/news/352875.html

相关文章:

  • WebSocket——相关介绍以及后端配置
  • 单片机设计注意事项
  • Ubuntu 如何根据NVIDIA显卡型号确定对应的显卡驱动版本并安装
  • 如何选择一款安全高效的数据自动同步工具?
  • 【linux】docker下nextcloud安装人脸识别插件
  • 2. C++服务器编程-信号
  • C#_库的引用
  • C++:STL—算法
  • 深入探索:移动云服务器的强大之处
  • 线性表(从数据结构的三要素出发)
  • [SCTF2019]babyre
  • uniapp实现下拉过滤查询列表
  • C++—— set、map、multiset、multimap的介绍及使用
  • STM32 学习——1. STM32最小系统
  • react实现table可拖拽表头(给react-jss样式传递参数、滚动条样式)
  • 如何跨过robots协议的限制爬取内容?
  • Parasoft C++Test软件静态分析操作指南_编码规范/标准检查
  • [AIGC] CompletableFuture如何实现任务链式调用?
  • 神奇动物在哪里?斯洛文尼亚旅游之野生动物寻踪
  • 电商项目之有趣的支付签名算法
  • Web开发核心
  • 【Python】【Scrapy 爬虫】理解HTML和XPath
  • 【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)
  • LeetCode 968.监控二叉树 (hard)
  • 数理逻辑:1、预备知识
  • 14-云原生监控体系-Redis_exporter 监控 MySQL[部署Dashborad告警规则实战]
  • DOS学习-目录与文件应用操作经典案例-xcopy
  • Midjourney是一个基于GPT-3.5系列接口开发的免费AI机器人
  • v-model详解
  • ArcGIS中分割与按属性分割的区别