Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
c++的策略模式如何实现 轻松替换算法和行为【设计模式】_创想鸟

c++的策略模式如何实现 轻松替换算法和行为【设计模式】

策略模式通过抽象接口定义统一行为契约,由具体策略类实现不同算法,上下文运行时动态切换,实现算法与逻辑解耦。

c++的策略模式如何实现 轻松替换算法和行为【设计模式】

策略模式在C++中通过接口抽象行为、用具体类实现不同算法,再由上下文动态组合使用——核心是把变化的算法抽成独立类,运行时切换,不改原有逻辑。

定义策略接口(Strategy)

用纯虚函数声明统一的行为契约,所有算法都必须遵守这个接口:

class PaymentStrategy {public:    virtual ~PaymentStrategy() = default;    virtual void pay(double amount) const = 0;  // 统一入口,具体实现各不同};

实现多个具体策略(Concrete Strategies)

每个类封装一种完整算法,互不影响,新增策略无需动其他代码:

支付宝支付:class AlipayStrategy : public PaymentStrategy { void pay(double a) const override { std::cout 微信支付:class WechatStrategy : public PaymentStrategy { void pay(double a) const override { std::cout 信用卡支付:class CreditCardStrategy : public PaymentStrategy { void pay(double a) const override { std::cout

创建上下文(Context)管理策略

上下文持有策略指针,提供设置和执行接口,完全屏蔽内部策略细节:

立即学习“C++免费学习笔记(深入)”;

class ShoppingCart {private:    std::unique_ptr strategy_;public:    void setStrategy(std::unique_ptr s) {        strategy_ = std::move(s);    }    void checkout(double total) const {        if (strategy_) strategy_->pay(total);        else throw std::runtime_error("No payment strategy set");    }};

使用时自由替换:

cart.setStrategy(std::make_unique()); cart.setStrategy(std::make_unique()); 甚至运行时根据用户选择或配置文件动态加载

避免常见坑:生命周期与所有权

策略对象通常由上下文管理,推荐用std::unique_ptr明确归属;若需共享,可用std::shared_ptr但注意循环引用;不要传裸指针或栈对象地址,容易悬空。

策略本身应保持无状态或仅依赖构造参数——这样才真正可复用、可测试、可并发。

以上就是c++++的策略模式如何实现 轻松替换算法和行为【设计模式】的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489849.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
c++中的reinterpret_cast有什么危险_c++最不安全的类型转换【避坑】
上一篇 2025年12月19日 12:45:05
c++如何使用Clang的静态分析器_c++ Scan-build发现潜在bug【代码质量】
下一篇 2025年12月19日 12:45:14

相关推荐

  • MacBookPro怎么下VSCode_MacBookPro下载安装VSCode详细教程

    访问code.visualstudio.com下载Mac通用版安装包;2. 解压后将Visual Studio Code.app拖入“应用程序”文件夹;3. 首次运行需右键选择“打开”以绕过安全限制;4. 推荐安装Python、Prettier等常用插件并配置环境变量;5. 若字体模糊可调整zoom…

    2026年9月21日
    000
  • 一周学会蝴蝶号无人直播的完整课程计划推荐

    一周学会蝴蝶号无人直播的完整课程计划推荐一周学会蝴蝶号无人直播的完整课程计划推荐一周学会蝴蝶号无人直播的完整课程计划推荐一周学会蝴蝶号无人直播的完整课程计划推荐

    掌握“蝴蝶号”无人直播的核心要义,一周内可搭建初步系统并具备独立操作能力。1.第一天厘清概念并完成基础环境搭建;2.第二天熟悉obs基础操作与场景构建;3.第三天准备高质量内容素材并确定风格;4.第四天设置自动化逻辑与推流配置;5.第五天处理互动机制及常见问题;6.第六天进行首次正式直播并复盘;7.…

    2026年9月21日 • 用户投稿
    100
  • 海茄子是以下哪种生物的俗称

    支付宝神奇海洋今日答案更新至2025年10月26日 1、“海茄子”是以下哪种生物的俗称? 2、正确答案:海鞘 3、答案解析: 在我国沿海地区,“海茄子”是海鞘的常见俗称。海鞘属于脊索动物门中的尾索动物亚门,是一种典型的无脊椎动物。全球范围内约有1250种海鞘,因生长环境和地域差异,其外形多种多样——…

    2026年9月21日
    100
  • VSCode报错怎么显示中文_VSCode错误信息本地化与中文显示教程

    安装中文语言包可将VSCode界面和错误提示转为中文,提升使用便捷性;但外部工具如编译器、解释器生成的报错仍为英文,因VSCode仅显示其原始输出,无法翻译。 在VSCode中让报错信息显示中文,核心在于安装并启用官方的中文(简体)语言包。这不仅仅是针对错误信息,而是将整个VSCode的用户界面本地…

    2026年9月21日
    000
  • 编译CEGUI「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

    2026年9月21日
    100
  • 如何使用XGBoost训练AI大模型?优化机器学习模型的步骤

    XGBoost并非用于训练GPT类大模型,而是擅长处理结构化数据的高效梯度提升算法,其优势在于速度快、准确性高、支持并行计算、内置正则化与缺失值处理,适用于表格数据建模;通过分阶段超参数调优(如学习率、树深度、采样策略)、结合贝叶斯优化与交叉验证,并配合特征工程、数据预处理和集成学习等关键步骤,可显…

    2026年9月21日
    200
  • 抖音扫码点单小程序介绍及使用方法解析

    抖音扫码点单小程序在哪里 引言: 在移动互联网迅猛发展的背景下,小程序已深度融入人们的日常生活。作为抖音生态中的重要一环,抖音扫码点单小程序为线下消费场景注入了新的活力,搭建起商家与用户之间高效互动的桥梁。本文将围绕其核心功能、具体操作流程以及市场数据表现等方面进行全面解读,助力用户和商户更好地掌握…

    2026年9月21日
    000
  • mysql如何设置自动重连

    答案:通过连接配置、连接池和应用层逻辑实现MySQL自动重连。启用MYSQL_OPT_RECONNECT选项(旧版本),推荐使用连接池如PooledDB、HikariCP并配置ping机制,应用层捕获连接异常后重试,结合指数退避策略提升稳定性。 MySQL 客户端或应用程序在连接断开后无法自动恢复,…

    2026年9月21日
    100
  • 如何通过手机点单购买奈雪的茶抖音券?快速指南!

    在数字化生活日益普及的今天,智能手机已经深度融入我们的日常。对于喜爱奈雪的茶的消费者而言,通过手机获取抖音优惠券已成为一种高效又实惠的方式。本文将为您一步步解析如何使用手机轻松下单购买奈雪的茶抖音券,并提供实用操作技巧,助您畅享优惠好茶。 第一步:下载奈雪的茶官方应用 打开您手机上的应用市场(如苹果…

    2026年9月21日
    000
  • 如何制作抖音点单小程序:全面指南与实用技巧

    引言: 随着移动互联网的飞速发展,抖音已不仅仅是短视频平台,更成为商家连接用户的重要入口。越来越多企业开始关注抖音点单小程序的搭建,以提升服务效率和用户体验。本文将为您系统讲解抖音点单小程序的制作流程,并分享实用技巧与真实案例,助您快速打造专属的小程序,实现流量变现与销售增长。 1. 明确核心需求与…

    2026年9月21日
    200
  • 抖音奈雪点单小程序怎么弄的

    抖音奈雪点单小程序是专为抖音用户打造的一款便捷点单工具,依托抖音平台生态,让用户无需跳转即可轻松完成奈雪饮品的选购与下单。为提升用户体验,奈雪茶庄同步推出了详尽的操作说明和使用指引。 小程序使用步骤 1. 打开抖音APP,在搜索栏输入“奈雪点单”查找相关小程序,或通过抖音首页的“附近的小程序”入口快…

    2026年9月21日
    100
  • Windows11提示“应用程序无法正常启动(0xc000007b)”怎么解决_Windows11应用程序启动0xc000007b修复方法

    首先使用SFC工具修复系统文件,再重新安装Visual C++运行库,接着更新DirectX组件,最后可借助专用DLL修复工具解决0xc000007b错误。 如果您尝试在Windows 11上启动某个应用程序,但弹出“应用程序无法正常启动(0xc000007b)”的错误提示,则可能是由于系统文件损坏…

    2026年9月20日
    100
  • 淘宝88vip会员可以给别人使用吗?该如何办理呢?淘宝88VIP怎么共享吗?1分钟学会主副卡绑定,全家都能用!

    一、淘宝88VIP会员可以和家人朋友共用吗? 可以!淘宝88VIP支持主副账号共享机制,主账号最多可绑定5个亲友账号,让他们一同享用部分会员福利。但需要注意的是,像95折购物优惠、专属客服等核心权益仅限主账号本人使用。本文将详细介绍如何开通88VIP、如何添加家庭成员、哪些权益能共享,并提醒你关注账…

    2026年9月20日
    000
  • 华为Nova 12 Pro指纹识别异常 华为Nova 12 Pro安全设置教程

    先检查设置与清洁,确认指纹功能开启、传感器干净、手指干燥且无保护膜干扰;再重新录入指纹,覆盖多角度并设备用手指;若仍不行,尝试重启、更新系统或进入安全模式排查软件冲突;最后通过工程菜单检测硬件,必要时联系售后。 华为Nova 12 Pro的指纹识别出问题,别急着送修,大部分情况都能自己解决。关键要分…

    2026年9月20日
    900
  • 蚂蚁庄园3.10:洗尽铅华指女子卸妆

    蚂蚁庄园3.10:洗尽铅华指女子卸妆蚂蚁庄园3.10:洗尽铅华指女子卸妆蚂蚁庄园3.10:洗尽铅华指女子卸妆蚂蚁庄园3.10:洗尽铅华指女子卸妆

    蚂蚁庄园3.9:洗尽铅华最初指的是古代女性卸下妆饰,展现真实素颜。 1、 打开支付宝,查找蚂蚁庄园并点击进入。 2、 进入庄园后,点击下方的领饲料按钮。 3、 在弹出的选项中选择“庄园小课堂”即可参与答题。 4、 最后在答题界面选择答案完成操作。 以上就是蚂蚁庄园3.10:洗尽铅华指女子卸妆的详细内…

    2026年9月20日 • 用户投稿
    000
  • 如何为VSCode配置C++开发环境?

    答案:配置VSCode的C++环境需安装MinGW-w64编译器并添加到PATH,安装C/C++和可选Code Runner扩展,创建.c_cpp_properties.json、tasks.json和launch.json文件以配置编译器路径、编译任务和调试设置,最后通过编译运行测试代码验证配置成…

    2026年9月20日
    100
  • VSCode的侧边栏图标代表什么?

    资源管理器(文件夹图标)用于管理项目文件结构,支持新建、重命名、删除和拖拽操作;2. 搜索(放大镜图标)实现全局文本查找与替换,支持正则表达式及范围筛选;3. 源代码管理(分支图标)集成Git功能,可查看变更、提交代码并同步远程仓库;4. 运行和调试(虫子图标)支持断点调试、变量监控及多语言启动配置…

    2026年9月20日
    000
  • Linux如何将进程放入后台运行

    将Linux进程放入后台运行主要有四种方法:使用&符号在启动时放入后台;通过Ctrl+Z暂停后用bg继续运行;结合nohup与&防止会话关闭导致终止;使用screen或tm…

    2026年9月20日
    000
  • 更智能、更安全、更流畅 鸿蒙6体验全面升级,畅享智慧生活

    更智能、更安全、更流畅 鸿蒙6体验全面升级,畅享智慧生活更智能、更安全、更流畅 鸿蒙6体验全面升级,畅享智慧生活更智能、更安全、更流畅 鸿蒙6体验全面升级,畅享智慧生活更智能、更安全、更流畅 鸿蒙6体验全面升级,畅享智慧生活

    2025年10月22日,华为正式推出全新操作系统——harmonyos 6(鸿蒙操作系统6)。此次发布不仅是技术体验的全面升级,更标志着鸿蒙生态迈入关键发展阶段。从“可用”到“好用”,鸿蒙正以惊人的速度进化,重新定义万物互联时代的用户体验边界。 作为新一代全场景智能系统,HarmonyOS自2019…

    2026年9月20日 • 用户投稿
    000
  • 怎样取消订阅

    1、可通过App Store取消订阅:进入设置-Apple ID-订阅,选择项目并取消。2、官网取消:登录服务网站账户中心,找到订阅管理并终止。3、第三方支付如支付宝:进入免密支付/自动扣款,关闭对应服务的自动续费。 如果您在使用某项服务时发现自动续费或不再需要继续接收相关内容,可能需要取消订阅以避…

    2026年9月20日
    700

发表回复

登录后才能评论
关注微信