设计模式:策略模式

定义

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

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


4+1视图

优缺点

  1. 优点
  • 策略类之间可以自由切换
    由于策略类都实现同一个接口,所以使它们之间可以自由切换。
  • 易于扩展
    增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合"开闭原则"
  • 避免使用多重条件选择语句(if else),充分体现面向对象设计思想。
  1. 缺点:
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。
相关推荐
葬送的代码人生12 小时前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
无风听海15 小时前
Claude Agent Skills 的四种设计模式;从渐进式披露到最小权限
java·算法·设计模式
富贵冼中求16 小时前
从单向流到双向 RPC:Agent 通信协议的范式分叉与 ACP 协议实战拆解
设计模式·架构
电子科技圈19 小时前
先进封装、芯粒架构和3D集成——先进异构集成亟需兼具标准化与定制化能力的互联及总线IP解决方案
tcp/ip·设计模式·架构·软件构建·代码规范·设计规范
zjun100121 小时前
C++:2.工厂模式
设计模式
触底反弹1 天前
🤯 面试被问 AI Workflow 和 Agent 有啥区别?3 张图 + 2 段代码讲清楚!
人工智能·设计模式·面试
张小姐的猫2 天前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
杨充2 天前
10.可测试性实战设计
设计模式·开源·代码规范
杨充2 天前
9.重构十二式的实战
设计模式·开源·代码规范
杨充2 天前
6.设计原则的全景图
设计模式·开源·全栈