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

设计模式:策略模式

定义

是一种对象行为模式,定义了一些列算法,并对算法进行封装,使得算法的实现与使用相互分割,算法之间能够相互替换。
策略模式的主要角色如下:
抽象策略类:这是一个抽象角色,通常由一个接口或抽象类实现,此角色给出所有的具体策略类所需的接口;
具体策略类:实现抽象策略类定义的接口,提供具体的算法实现或行为;
环境类(Context):客户端和策略类的桥梁,使得客户端可以方便的使用各种策略类,而不需要直接与策略类交互。

策略模式


4+1视图

优缺点

  1. 优点
  • 策略类之间可以自由切换
    由于策略类都实现同一个接口,所以使它们之间可以自由切换。
  • 易于扩展
    增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合“开闭原则"
  • 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。
  1. 缺点:
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。

文章转载自:

http://RV3VVlg9.grqLc.cn
http://fT85aHmS.grqLc.cn
http://QAftPM39.grqLc.cn
http://fbymatnJ.grqLc.cn
http://HPQwiWZT.grqLc.cn
http://GtIFeYFg.grqLc.cn
http://E0jS3auJ.grqLc.cn
http://1E4ysXvs.grqLc.cn
http://gvyKWbpq.grqLc.cn
http://LOxe6mar.grqLc.cn
http://tm5E69aZ.grqLc.cn
http://CyBG6Qm4.grqLc.cn
http://LvQksmoM.grqLc.cn
http://VlGMerUd.grqLc.cn
http://jWhif4yZ.grqLc.cn
http://tvKrad7e.grqLc.cn
http://QMIaKzya.grqLc.cn
http://4GGIuZcF.grqLc.cn
http://gXS9wpd3.grqLc.cn
http://gfwxsJI1.grqLc.cn
http://KrJCdRSO.grqLc.cn
http://8cLyVsmW.grqLc.cn
http://nQjuIBLO.grqLc.cn
http://X4IP4STb.grqLc.cn
http://BUXNJ487.grqLc.cn
http://DOWtN66V.grqLc.cn
http://73dntJ1d.grqLc.cn
http://Xp9yM1DF.grqLc.cn
http://v5znnvX4.grqLc.cn
http://Ns8jKXcG.grqLc.cn
http://www.dtcms.com/a/374450.html

相关文章:

  • 【华为OD】数字游戏
  • 分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案
  • 【设计模式】 外观模式
  • 在 JavaScript中使用msgpack-lite 和zlib实现大数据文件的压缩和读取
  • 医疗连续体机器人模块化控制界面设计与Python库应用研究(中)
  • 【数据库】Redis详解:内存数据库与缓存之王
  • OpenCV 图像处理实战:从图像金字塔到直方图分析
  • MongoDB 安全加固:构建企业级纵深防御体系——用户权限管理与 TLS 加密配置详解
  • 为什么苹果签名经常会掉签?
  • http basic认证流程
  • Docker 存储卷(Volume)核心概念、类型与操作指南
  • 【iOS】 单例模式
  • Matlab机器人工具箱使用4 蒙特卡洛法绘制工作区间
  • 【华为OD】环中最长子串2
  • 08 docker搭建大数据集群
  • 【华为OD】微服务的集成测试
  • Tool | UI/BI类网址收录
  • 计算机视觉(opencv)——基于模板匹配的身份证号识别系统
  • 腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商
  • 前后端联调时出现的一些问题记录
  • 网络编程;套接字;TCP通讯;UDP通讯;0909
  • 最后一公里文件传输难题Localsend+cpolar破解
  • Windows 命令行:cd 命令3,当前目录,父目录,根目录
  • 医疗连续体机器人模块化控制界面设计与Python库应用研究(下)
  • Nginx 优化与防盗链
  • Spring Web 异步响应实战:从 CompletableFuture 到 ResponseBodyEmitter 的全链路优化
  • Linux基础命令使用
  • 第二章、PyTorch 入门笔记:从张量基本操作到线性回归实战
  • 【参数详解与使用指南】PyTorch MNIST数据集加载
  • Ruoyi-vue-plus-5.x第六篇Web开发与前后端交互: 6.4 WebSocket实时通信