设计模式:策略模式

定义

是一种对象行为模式,定义了一些列算法,并对算法进行封装,使得算法的实现与使用相互分割,算法之间能够相互替换。

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


4+1视图

优缺点

  1. 优点
  • 策略类之间可以自由切换
    由于策略类都实现同一个接口,所以使它们之间可以自由切换。
  • 易于扩展
    增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合"开闭原则"
  • 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。
  1. 缺点:
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。
相关推荐
略略略咯咯8 小时前
(总结)设计模式
设计模式
Cosolar21 小时前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
Nebula_g1 天前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式
George_Ye2 天前
同一本书,一人一份:我如何设计 AI 个性化扫书报告
设计模式
莫得感情 o2 天前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
coding4u3 天前
Mac 外接显示器完全指南:从插上线到调好每个参数
macos·计算机外设·文件管理·显示器·策略模式·quick look扩展
AustinXu3 天前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层
设计模式·团队管理
剧中有戏3 天前
单例模式从入门到精通:一个数据库连接池的完整剖析
设计模式
胡萝卜术3 天前
编译期与运行期的双重防线:从 TypeScript 类型之争到 LLM 输出的自动化择优
前端·设计模式·面试