C++ 框架中,不同设计模式的优势对比

王林

王林

2024-07-10

601人浏览

原创

工厂模式:创建对象的灵活性,解耦创建逻辑。构造器模式:对象保持一致状态,控制创建过程。单例模式:限制类实例化,实现全局访问。观察者模式:松耦合,事件订阅和通知。策略模式:动态切换算法,提高灵活性。适配器模式:适配不兼容接口,促进代码重用。装饰器模式:动态修改对象行为,保持可扩展性。

C++ 框架中,不同设计模式的优势对比

C++ 框架中的不同设计模式优势对比

引言
设计模式是代码组织和结构化的强大工具,在 C++ 框架中广泛应用。理解不同设计模式的优势对于选择最适合特定任务的模式至关重要。

工厂模式

  • 优点:创建对象的灵活性和解耦性,允许在不修改客户代码的情况下更改对象创建逻辑。

构造器模式

  • 优点:确保对象始终保持一致的状态,提供对对象创建过程的细粒度控制。

单例模式

  • 优点:限制类实例化到一个,用于需要全局访问或资源池的场景。

观察者模式

C函数速查手册(CHM版)
C函数速查手册(CHM版)

C函数速查手册(CHM版)

下载
  • 优点:允许对象订阅事件并被通知,实现松耦合和代码可重用性。

策略模式

  • 优点:将算法封装为独立类,允许在运行时动态切换算法,提高代码的灵活性。

适配器模式

  • 优点:将两个不兼容的接口适配,允许它们协同工作,实现代码重用性。

装饰器模式

  • 优点:动态修改对象的 behavior,通过组合而非继承来增强功能,保持对象的可扩展性。

实战案例:策略模式

考虑一个计算销售税的系统。不同州有不同的税率。使用策略模式,我们可以创建多个策略类,每个策略类对应一种税率。

struct TaxStrategy {
  virtual double calculateTax(double amount) const { return 0.0; };
};

struct NoTaxStrategy : public TaxStrategy {
  double calculateTax(double amount) const override { return 0.0; };
};

struct FlatTaxStrategy : public TaxStrategy {
  double calculateTax(double amount) const override { return 0.1 * amount; };
};

class Sale {
public:
  Sale(double amount, std::shared_ptr<taxstrategy> tax_strategy)
      : amount_(amount), tax_strategy_(std::move(tax_strategy)) {}

  double getTotalAmount() const {
    return amount_ + tax_strategy_->calculateTax(amount_);
  }

private:
  double amount_;
  std::shared_ptr<taxstrategy> tax_strategy_;
};

int main() {
  Sale sale1(100.0, std::make_shared<notaxstrategy>());
  Sale sale2(100.0, std::make_shared<flattaxstrategy>());
  std::cout <p>在这个示例中,策略模式允许我们轻松切换不同的税率策略,而无需修改客户代码。</p></flattaxstrategy></notaxstrategy></taxstrategy></taxstrategy>

C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c++

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

2768

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

2145

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3364

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

160

15

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

2023.08.14

2443

4

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

10

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.4万人学习

第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.6万人学习

Laravel 8 课程精讲(台湾同胞版)
Laravel 8 课程精讲(台湾同胞版)

共22课时 | 2.8万人学习