当前位置: 首页 > 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;
}

相关文章:

策略模式

定义&#xff1a;即定义一系列的算法&#xff0c;算法1&#xff0c;算法2&#xff0c;...&#xff0c;算法n&#xff0c;把他们封装起来&#xff0c;使他们可以相互替换。 优点&#xff1a;使得一个类的行为或者其算法可以在运行时改变&#xff0c;而且使用Context类的人在外部…...

性能优化--CPU微架构

一 指令集架构 Intel X86, ARM v8, RISC-V 是当今广泛使用的指令架构的实例。 大多数现代架构可以归类为基于通用寄存器的加载和存储型架构&#xff0c;在这种架构下&#xff0c;操作数倍明确指定&#xff0c;只能使用夹在和存储指令访问内存。除提供基本的功能之外&#xff0c…...

在 Sanic 框架中实现高效内存缓存的多种方法

在使用 Sanic 框架开发 Web 应用时&#xff0c;我们可以通过内存缓存来提升应用的性能&#xff0c;减少对数据库或其他外部服务的频繁请求。下面提供一些在 Sanic 中实现内存缓存的基本方法。 使用 Python 内置的 functools.lru_cache 如果你的缓存需求比较简单&#xff0c;且…...

Mac 环境变量配置基础教程

MacOS 下一般配置有多个 Shell&#xff0c;如 Bash、ZSH 等&#xff0c;不同的 Shell 其创建 Terminal 时使用的环境变量配置文件也不尽相同&#xff0c;但一般都会读取并执行脚本文件 /etc/profile 来加载系统级环境变量&#xff0c;而用户级别环境变量&#xff0c;一般都会在…...

Qt如何屏蔽工具栏(QToolBar)自动折叠功能

最近发现Qt上工具栏一行放不下的时候&#xff0c;会自动折叠起来。当用户点击展开功能的小三角按钮时&#xff0c;工具栏会展开成多行。这个功能本身没什么问题&#xff0c;但是当工具栏展开的时候&#xff0c;鼠标光标一旦不小心移动到了工具栏外面&#xff0c;这时候&#xf…...

【数据分享】中国统计摘要(1978-2024)

数据介绍 《中国统计摘要&#xff08;1978 - 2024&#xff09;》犹如一部浓缩的历史巨著&#xff0c;承载着中国几十年来的发展轨迹与辉煌成就。它是由国家统计局精心编纂的重要资料&#xff0c;为我们全方位地展现了中国在经济、社会、民生等各个领域的深刻变革。 这本统计摘…...

unity运行状态下移动、旋转、缩放控制模型

demo地址&#xff1a;https://download.csdn.net/download/elineSea/90017272 unity2021以上版本用下面的插件 https://download.csdn.net/download/elineSea/90017305...

《 C++ 点滴漫谈 一 》C++ 传奇:起源、演化与发展

摘要 C 是一门兼具高效性与灵活性的编程语言&#xff0c;自上世纪 80 年代诞生以来&#xff0c;已经深刻影响了计算机科学与技术的发展。从 Bjarne Stroustrup 的初步构想到如今遍布各大领域&#xff0c;C 经历了语言规范的不断完善与功能的持续扩展。本文详细回顾了 C 的起源…...

Github客户端工具github-desktop使用教程

文章目录 1.客户端工具的介绍2.客户端工具使用感受3.仓库的创建4.初步尝试5.本地文件和仓库路径5.1原理说明5.2修改文件5.3版本号的说明5.4结合码云解释5.5版本号的查找 6.分支管理6.1分支的引入6.2分支合并6.3创建测试仓库6.4创建测试分支6.5合并分支6.6合并效果查看6.7分支冲…...

自然语言处理:第六十三章 阿里Qwen2 2.5系列

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor 项目地址: QwenLM/Qwen2.5: Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud. 官网地址: 你好&#xff0c;Qwen2 | Qwen & Qwen2.5: 基础模型大派对&a…...

springboot中设计基于Redisson的分布式锁注解

如何使用AOP设计一个分布式锁注解&#xff1f; 1、在pom.xml中配置依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.3.26</version></dependency><dependenc…...

C++初阶学习第十一弹——list的用法和模拟实现

目录 一、list的使用 二.list的模拟实现 三.总结 一、list的使用 list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。 常见的list的函数的使用 std::list<int> It {1,…...

共享单车管理系统项目学习实战

前言 Spring Boot Vue前后端分离 前端&#xff1a;Vue&#xff08;CDN&#xff09; Element axios(前后端交互) BaiDuMap ECharts(图表展示) 后端&#xff1a;Spring Boot Spring MVC(Web) MyBatis Plus(数据库) 数据库:MySQL 验证码请求...

详细解读TISAX汽车信息安全评估

TISAX汽车信息安全评估是一个针对汽车行业的信息安全评估和交换机制&#xff0c;以下是对其的详细解读&#xff1a; 一、背景与目的 TISAX是在德国汽车工业协会&#xff08;VDA&#xff09;的支持下开发的&#xff0c;旨在确保跨公司边界的汽车行业信息安全评估的认可度&…...

gitlab cicd搭建及使用笔记(二)

cicd之gitlab-runner使用要点 官方链接&#xff1a;https://docs.gitlab.com/runner/ 附历史文章链接 https://blog.csdn.net/qq_42936727/article/details/143624523?spm1001.2014.3001.5501 gitlab-runner常用命令及解释 gitlab-runner verify 容器内&#xff0c;检查注…...

鸿蒙实战:页面跳转传参

文章目录 1. 实战概述2. 实现步骤2.1 创建鸿蒙项目2.2 编写首页代码2.3 新建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 本次实战&#xff0c;学习如何在HarmonyOS应用中实现页面间参数传递。首先创建项目&#xff0c;编写首页代码&#xff0c;实现按钮跳转至第二个页面并…...

Spring Security SecurityContextHolder(安全上下文信息)

在本篇博客中&#xff0c;我们将讨论 Spring Security 的 SecurityContextHolder 组件&#xff0c;包括其实现方式、关键特性&#xff0c;并通过实际示例进行说明。 理解 SecurityContextHolder SecurityContextHolder 是 Spring Security 存储当前安全上下文详细信息的地方。…...

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点&#xff1a; 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…...

Python JSON 数据解析教程:从基础到高级

Python JSON 数据解析教程&#xff1a;从基础到高级 引言 在现代编程中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;已成为数据交换的标准格式。它以易于阅读和编写的文本格式存储和传输数据&#xff0c;广泛应用于Web API和配置文件中。Python提供了…...

25.UE5时间膨胀,慢动作,切换地图,刷BOSS

2-27 时间膨胀、慢动作、切换地图、刷BOSS_哔哩哔哩_bilibili 目录 1.刷新BOSS逻辑 2.时间膨胀实现慢动作 3.胜利画面&#xff0c;下一关 3.1胜利画面UI 3.2第一关、第二关游戏模式 3.3下一关按钮事件的绑定 1.刷新BOSS逻辑 实现当场上的怪物都死亡后&#xff0c;进行刷…...

运筹优化算法工程师入门指南:从数学基础到实战项目(附学习资源清单)

运筹优化算法工程师入门指南&#xff1a;从数学基础到实战项目&#xff08;附学习资源清单&#xff09; 运筹优化&#xff08;Operations Research&#xff09;作为一门融合数学建模与工程实践的学科&#xff0c;正在供应链管理、智能制造、交通调度等领域展现出不可替代的价值…...

从One-Hot到Embedding:一文读懂NLP中的词向量进化史

从One-Hot到Embedding&#xff1a;一文读懂NLP中的词向量进化史 在自然语言处理&#xff08;NLP&#xff09;的发展历程中&#xff0c;如何有效地表示单词一直是核心挑战之一。早期的计算机科学家们发现&#xff0c;要让机器理解人类语言&#xff0c;首先需要解决"词如何数…...

HunyuanVideo-Foley惊艳效果:AI生成的赛博朋克城市雨夜环境音效

HunyuanVideo-Foley惊艳效果&#xff1a;AI生成的赛博朋克城市雨夜环境音效 1. 效果展示&#xff1a;赛博朋克音效的沉浸式体验 HunyuanVideo-Foley 私有部署镜像带来的音效生成能力&#xff0c;让AI创作达到了专业音频工程师的水准。我们以"赛博朋克城市雨夜"为场…...

鸿蒙 HarmonyOS 6 | 网络请求超时重试与弱网适配深度解析

文章目录前言一、网络请求的底层机制与超时配置二、超时重试的核心原理与代码实现三、架构优化策略总结前言 弱网环境下的网络波动极易导致应用与服务端断开连接。这不仅影响软件可用性&#xff0c;更是底层技术架构必须解决的核心问题。鸿蒙 6 在网络请求模块进行了底层架构强…...

[搭建Web漏洞靶场:DVWA在CentOS上的部署]

//DVWA 是一个用来进行安全脆弱性鉴定的Web应用平台&#xff0c;可以手动调整靶机源代码的安全级别&#xff0c;包含暴力破解、命令行注入、跨站请求伪造、文件包含、文件上传、SQL注入、XSS等漏洞。&#xff08;1&#xff09;下载安装包通过网盘分享的文件&#xff1a;DVWA-ma…...

哔哩下载姬(downkyi)终极指南:简单三步掌握B站视频批量下载与处理技巧

哔哩下载姬(downkyi)终极指南&#xff1a;简单三步掌握B站视频批量下载与处理技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、…...

C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET

C vs .NET 数组原地反转实测&#xff1a;小数组 C 碾压&#xff0c;大数组 .NET 反杀&#xff1f; 前几天看到一篇文章&#xff1a;《将一个序列反序&#xff0c;在C与C#下性能比较》&#xff08;链接大家可以自行搜索&#xff09;。作者对比了 C# 的“托管/非托管”实现和 C 的…...

沉浸推理的线上聚会:线上剧本杀APP的功能设计

当好友散落在不同的城市&#xff0c;想要围坐一桌来一场酣畅淋漓的推理游戏似乎成了奢望。线上剧本杀APP的出现&#xff0c;打破了空间的限制&#xff0c;让热爱推理与角色扮演的人们能够在线上相聚&#xff0c;共同沉浸在一个个精心编织的故事里。以下从功能体验的角度&#x…...

FPGA设计实战:如何用IBUFDS_IBUFDISABLE原语给你的差分输入省电(附Vivado 2023.1配置)

FPGA低功耗设计实战&#xff1a;IBUFDS_IBUFDISABLE原语在差分信号中的节能应用 在高速数字系统设计中&#xff0c;差分信号因其优异的抗干扰能力和噪声抑制特性&#xff0c;已成为LVDS、HDMI等接口的标准配置。然而&#xff0c;差分输入缓冲器带来的额外功耗往往被工程师忽视—…...

Windows 11界面自定义终极指南:使用ExplorerPatcher恢复经典体验

Windows 11界面自定义终极指南&#xff1a;使用ExplorerPatcher恢复经典体验 【免费下载链接】ExplorerPatcher 提升Windows操作系统下的工作环境 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 还在为Windows 11 24H2的新界面感到不适&#xff1f…...