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

【29】c++设计模式——>策略模式

策略模式

C++中的策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的类,并且使它们可以互相替换,从而使得算法的变化独立于使用算法的客户端。

策略模式通常由三个核心组件组成:

1.策略接口(Strategy Interface):定义了所有具体策略类必须实现的方法,通常是一个纯虚函数接口。
2.具体策略类(Concrete Strategies):实现了策略接口,并提供了不同的算法实现。
3.环境类(Context Class):包含一个指向策略接口的指针成员,用于调用具体策略类的算法。

示例代码

#include<iostream>
#include<string>
using namespace std;class Strategy
{
public:virtual void execute() = 0;
};class ConcreteStrategyA : public Strategy
{
public:void execute() override{cout << "================_i am A strategy_=======================" << endl;}
};class ConcreteStrategyB : public Strategy
{
public:void execute() override{cout << "================_i am B strategy_=======================" << endl;}
};class Context
{
public:void call(int type){if (s != nullptr){delete s;}switch (type){case 1:s = new ConcreteStrategyA;break;case 2:s = new ConcreteStrategyB;break;default:break;}s->execute();}~Context(){if (s != nullptr){delete s;}}private:Strategy *s = nullptr;
};int main()
{Context *c = new Context;c->call(1);c->call(2);
}

在这里插入图片描述

相关文章:

【29】c++设计模式——>策略模式

策略模式 C中的策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的类&#xff0c;并且使它们可以互相替换&#xff0c;从而使得算法的变化独立于使用算法的客户端。 策略模式通…...

2023Jenkins连接k8s

首先配置k8s config文件 1.方式获取k8s密钥 cat .kube/config 2.导出方式或者密钥 kubectl config view --raw > k8s-config-admin pipeline {agent {kubernetes {yaml apiVersion: v1kind: Podmetadata:labels:some-label: devopsspec:containers:- name: dockerimage: d…...

SpringBoot 入门 参数接收 必传参数 数组 集合 时间接收

接口声明 RestController //表示该类为请求处理类public class HttpDeal {RequestMapping("/login")//这个方法处理哪一个地址过来的请求public String hello(){return "返回给浏览器";}}接收参数 RequestMapping("/login")public String logi…...

【Qt之JSON文件】QJsonDocument、QJsonObject、QJsonArray等类介绍及使用

Qt之JSON相关类介绍 QJsonDocument常用函数枚举类型 QJsonDocument::DataValidation枚举类型 QJsonDocument::JsonFormat构造函数静态函数成员函数示例 QJsonObject常用函数构造函数&#xff1a;成员函数&#xff1a; QJsonObject 与 QVariantMap 相互转换 QJsonArray常用函数构…...

阿里云今年有双十一活动吗?不好说

阿里云今年有双十一活动吗&#xff1f;不好说&#xff0c;因为去年就没有。阿里云双11优惠活动是一项大型的促销活动&#xff0c;每年都有&#xff0c;但是去年没有双十一活动&#xff0c;不知道今年2023年阿里云是否有双11优惠活动。但是阿里云百科aliyunbaike.com猜想&#x…...

【驱动开发】创建设备节点、ioctl函数的使用

一、控制三盏灯的亮灭 头文件&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #def…...

Tomcat启动控制台乱码问题

修改Tomcat/conf/logging.properties...

学习周总结

http://t.csdnimg.cn/DKki2 http://t.csdnimg.cn/NvudJ 项目进度 做了大概的主界面&#xff0c;然后做了一个客户端和服务端的分离&#xff0c;实现了在客户端发送的信息&#xff0c;在服务端能收到&#xff1b;客户端和服务端的制作是我之前有写的一个http://t.csdnimg.cn/…...

如何在不恢复出厂设置的情况下解锁 Android 手机密码?

当您忘记 Android 手机的密码时&#xff0c;可能会有压力&#xff0c;尤其是当您不想恢复出厂设置并删除所有数据时。但是&#xff0c;有一些方法可以在不诉诸如此激烈的步骤的情况下解锁手机。我们将在这篇文章中教您如何在不恢复出厂设置的情况下解锁 Android 手机密码。我们…...

移动设备管理对企业IT 安全的增强

移动设备管理 &#xff08;MDM&#xff09; 是通过定义策略和部署安全控制&#xff08;如移动应用程序管理、移动内容管理和条件 Exchange 访问&#xff09;来管理移动设备的过程。 完整的MDM解决方案可以管理在Android&#xff0c;iOS&#xff0c;Windows&#xff0c;macOS&a…...

app分发的一些流程

应用分发的流程通常包括以下步骤&#xff1a; 开发应用程序&#xff1a;首先&#xff0c;您需要开发您的应用程序。这包括编写代码、设计用户界面、测试应用程序等等。确保您的应用程序符合各个应用商店的规范和要求&#xff0c;以确保顺利通过审核。 准备应用材料&#xff1a…...

深入浅出讲解Spring IOC和DI的区别

Spring IOC和DI的区别 一&#xff0c;介绍 前言 很多人都会把ioc和di说成同一个东西&#xff0c;其实IOC和DI虽然在概念上可以笼统地视为同一事物&#xff0c;但其本质上存在区别。IOC&#xff08;Inverse of Control&#xff0c;控制反转&#xff09;从容器的角度描述&#…...

文件操作 IO

文件(File) 狭义的文件: 指的是硬盘上的文件和目录 广义的文件: 泛指计算机中很多软硬件资源(操作系统中把很多硬件和软件资源抽象成了文件, 按照文件的方式同意管理) 本章内容只讨论狭义的文件 路径 绝对路径: 以c: , d: 盘符开头的路径相对路径: 以当前所在的目录为基准(…...

ARouter - 组件化通信方案

官网 https://github.com/alibaba/ARouter/blob/master/README_CN.md 项目简介 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 功能介绍 支持直接解析标准URL进行跳转&#xff0c;并自动注入参数到目标页面中支持多模块工程使用支持添…...

Linux中常见的权限问题

目录 前言1. 目录权限2. umask3. 粘滞位结语 前言 在了解完上一篇文章 Linux权限的理解与操作 之后&#xff0c;还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限&#xff0c;umask 以及 粘滞位的使用。 1. 目录权限 问题一&#xff1a;进入一个目录&#xff0…...

【技术分享】RK356X Ubuntu 推流USB摄像头

本文适用与触觉智能所有RK356X ubuntu系统的主板。 IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板&#xff0c;采用四核A55,主频高达1.8GHz&#xff0c;专为个人移动互联网设备和AIOT设备而设计&#xff0c;内置了多种功能强大的嵌入式硬件引擎&#xff0c;为…...

介绍一下rabbitMq应用场景

任务队列&#xff1a;RabbitMQ可以将待处理的任务放入队列中&#xff0c;再由多个工作进程异步地执行这些任务。 日志处理&#xff1a;RabbitMQ可以通过发布-订阅模式将日志消息分发到多个消费者&#xff0c;并可以灵活地控制消息的优先级和过滤条件。 实时消息处理&#xff…...

IoT 物联网共享充电桩场景中设备资产定位和地理围栏开发实践

基于经纬度的设备资产定位和地理围栏在物联网场景中应用广泛 01 物联网 GEO 场景架构方案 首先&#xff0c;IoT 终端设备通过卫星定位模块获取当前经纬度&#xff1b;然后&#xff0c;将坐标信息实时上报到物联网平台&#xff1b;最后&#xff0c;存储到 Redis GEO 数据库中。 …...

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q&#xff1a;如何在Qt库的基础上&#xff0c;实现自定义控件呢&#xff1f; A&#xff1a;根据官方文档回答&#xff0c;就是继承需实现的控件&#xff0c;然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何&#xff1a; listItem 主…...

【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)

UITableView 列表的特点&#xff1a; 数据量大样式较为统一通常需要分组垂直滚动通常可视区只有一个 -> 视图的复用 UITableViewDataSource UITableView作为视图&#xff0c;只负责展示&#xff0c;协助管理&#xff0c;不管理数据 需要开发者为UITableView提供展示所需…...

AI原生研发为何90%团队卡在L2?AISMM成熟度评估实战手册(含自测评分表V2.3)

第一章&#xff1a;AISMM模型详解&#xff1a;AI原生软件研发成熟度评估 2026奇点智能技术大会(https://ml-summit.org) AISMM&#xff08;AI-native Software Maturity Model&#xff09;是由ML-Summit联合工业界与学术界共同提出的开源评估框架&#xff0c;专为衡量组织在AI…...

从零构建gensim词向量:以《三国演义》为例的Word2Vec全流程解析

1. 从零理解Word2Vec&#xff1a;为什么我们需要词向量&#xff1f; 记得我第一次接触词向量是在处理用户评论分类项目时。当时用传统的TF-IDF方法效果总是不理想&#xff0c;直到尝试了Word2Vec才明白问题所在——传统方法把每个词当成孤立的符号&#xff0c;而"好吃&quo…...

GD32F303硬件设计避坑指南:PWM引脚REMAP的那些教训

GD32F303硬件设计避坑指南&#xff1a;PWM引脚REMAP的那些教训 在嵌入式硬件设计中&#xff0c;GD32F303系列MCU因其出色的性价比和丰富的外设资源&#xff0c;成为许多工程师的首选。然而&#xff0c;在实际项目开发中&#xff0c;PWM引脚的配置和REMAP功能的使用往往成为硬件…...

从缺页异常到内存陷阱:一个mincore函数如何帮你检测手游里的透视自瞄挂

从缺页异常到内存陷阱&#xff1a;mincore函数在手游反外挂中的实战解析 手游安全攻防战从未停歇&#xff0c;尤其是FPS和MOBA类游戏中透视与自瞄外挂的泛滥&#xff0c;让开发者们不断寻找更底层的检测方案。当传统的内存校验和API监控难以应对内核级外挂时&#xff0c;Linux内…...

爱情最残忍的真相:你越爱她,她越不爱你,爱应该是平等的,是互相珍惜(你有自己的评价标准就行,不要在意社会评价指标)

爱情最残忍的真相:你越爱她,她越不爱你 目录 爱情最残忍的真相:你越爱她,她越不爱你 廉价的爱,从来都不被珍惜 冷漠的人,反而被捧在手心 这才是爱情最大的悲剧 真正的爱,从来都不是单方面的付出 我见过太多人在感情里活成了笑话。 他们把心掏出来,揉碎了喂给对方吃。…...

从不确定性到规律:随机信号的统计建模与工程应用

1. 随机信号&#xff1a;从噪声中寻找规律 第一次接触随机信号时&#xff0c;我盯着示波器上跳动的曲线发懵——这看起来就像一堆杂乱无章的毛线团。但导师告诉我&#xff1a;"这些看似混乱的波形里藏着宝藏&#xff0c;关键是要找到正确的解码方式。"十年后我才真正…...

别再一帧帧看视频了!用MS-TCN++搞定厨房早餐动作自动分割(附Breakfast数据集实战)

用MS-TCN实现厨房早餐视频的智能动作分割&#xff1a;从数据准备到模型部署全流程 清晨的厨房里&#xff0c;煎蛋的滋滋声、面包机的弹出声、咖啡机的蒸汽声交织在一起——这些看似简单的早餐准备动作&#xff0c;在计算机视觉领域却蕴含着复杂的时序模式识别问题。传统逐帧标注…...

天赐范式第16天:【硬核反骨】哥本哈根沉默:REM睡眠是大脑在50维相空间的“超决定论”搜索(附Python源码)

摘要&#xff1a;梦境不是随机的噪声&#xff0c;而是意识在混沌边缘的精确计算。本文基于 Kuramoto 高维耦合振子模型&#xff0c;利用纯 Python (NumPy) 模拟了快速动眼期&#xff08;REM&#xff09;的神经动力学。实验发现&#xff1a;系统在 李雅普诺夫指数 λ0.0086 的弱…...

Win11Debloat:三步告别Windows卡顿,让老电脑重获新生的系统优化指南

Win11Debloat&#xff1a;三步告别Windows卡顿&#xff0c;让老电脑重获新生的系统优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other cha…...

终极指南:5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程

终极指南&#xff1a;5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验任天堂Switch游戏的魅力吗&#xff1f;…...