设计模式:策略模式

定义

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

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


4+1视图

优缺点

  1. 优点
  • 策略类之间可以自由切换
    由于策略类都实现同一个接口,所以使它们之间可以自由切换。
  • 易于扩展
    增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合"开闭原则"
  • 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。
  1. 缺点:
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。
相关推荐
码界奇点6 小时前
Java设计模式精讲从基础到实战的常见模式解析
java·开发语言·设计模式·java-ee·软件工程
Charles_go8 小时前
41、C#什么是单例设计模式
java·设计模式·c#
ZHE|张恒8 小时前
设计模式实战篇(六):装饰器模式 —— 让系统具备“可生长能力”的架构思想
设计模式·装饰器模式
蓝桉~MLGT12 小时前
Python学习历程——文件
python·学习·策略模式
孟祥_成都12 小时前
下一代组件的奥义在此!headless 组件构建思想探索!
前端·设计模式·架构
颜酱19 小时前
理解编程的设计原则(前端角度)
设计模式
Wild_Pointer.1 天前
设计模式实战精讲:全景目录
设计模式·设计规范
一叶飘零_sweeeet1 天前
深度拆解汽车制造系统设计:用 Java + 设计模式打造高扩展性品牌 - 车型动态生成架构
java·设计模式·工厂设计模式
阿波罗尼亚1 天前
设计原则(一)Head First设计模式
设计模式
ZHE|张恒2 天前
设计模式实战篇(五):责任链模式 — 把复杂审批/过滤流程变成可组合的“传递链”
设计模式·责任链模式