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

策略模式

定义:即定义一系列的算法,算法1,算法2,...,算法n,把他们封装起来,使他们可以相互替换。

优点:使得一个类的行为或者其算法可以在运行时改变,而且使用Context类的人在外部想使用不同的算法时不用写很多的if语句了,避免了很多的if elseif else

//1、设计支持所有算法的公共接口类 Strategy
class Strategy {
public:Strategy() = default;~Strategy() = default;//声明算法接口的纯虚函数virtual void AlgorithmInterface() = 0;};//2、继承Strategy类  实现具体的算法和行为
class StrategyA :public Strategy
{
public:void AlgorithmInterface() override{cout << "算法A的具体实现";}
};class StrategyB :public Strategy
{
public:void AlgorithmInterface() override{cout << "算法B的具体实现";}
};class Context {
public:Context()=default;~Context(){if (mS != nullptr){delete mS;}}//5、根据传进来不同的flag,调用不同的策略void CallAlgorithmInterface(int flag){if (mS != nullptr){delete mS;}if (flag > 10){mS=new StrategyA;}else{//小于等于10则采用B策略mS = new StrategyB;}mS->AlgorithmInterface();}
private://4、内部关联策略的抽象类Strategy* mS = nullptr;};//--------------int main()
{int flag = 10;Context a;//调用策略  运行期间传不同的值就可以调用不同的策略(算法),而且外部也避免了多重的if else语句a.CallAlgorithmInterface(100);return 0;
}

http://www.lryc.cn/news/488201.html

相关文章:

  • 性能优化--CPU微架构
  • 在 Sanic 框架中实现高效内存缓存的多种方法
  • Mac 环境变量配置基础教程
  • Qt如何屏蔽工具栏(QToolBar)自动折叠功能
  • 【数据分享】中国统计摘要(1978-2024)
  • unity运行状态下移动、旋转、缩放控制模型
  • 《 C++ 点滴漫谈 一 》C++ 传奇:起源、演化与发展
  • Github客户端工具github-desktop使用教程
  • 自然语言处理:第六十三章 阿里Qwen2 2.5系列
  • springboot中设计基于Redisson的分布式锁注解
  • C++初阶学习第十一弹——list的用法和模拟实现
  • 共享单车管理系统项目学习实战
  • 详细解读TISAX汽车信息安全评估
  • gitlab cicd搭建及使用笔记(二)
  • 鸿蒙实战:页面跳转传参
  • Spring Security SecurityContextHolder(安全上下文信息)
  • 蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目
  • Python JSON 数据解析教程:从基础到高级
  • 25.UE5时间膨胀,慢动作,切换地图,刷BOSS
  • Three.js 相机控制器Controls
  • Android开发实战班 - 现代 UI 开发之自定义 Compose 组件
  • All-in-one Notion 介绍
  • 深入理解C++11右值引用与移动语义:高效编程的基石
  • 【WRF-Urban】URBPARM_LCZ.TBL 查找表解释及内容
  • 网络是怎么连接的
  • Java 实现PDF添加水印
  • 网络安全问题概述
  • (udp)网络编程套接字Linux(整理)
  • Web应用安全入门:架构搭建、漏洞分析与HTTP数据包处理
  • [JAVA]MyBatis框架—获取SqlSession对象