news 2026/5/16 14:09:21

Boost与设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Boost与设计模式

创建型模式

面向对象的软件开发的基础是对象。随着系统的不断演化,会出现越来越多的对象,如果单纯使用C++提供的new操作符,将使程序中到处都是硬编码的对象创建代码,很难适应变,化。而创建型模式抽象了类的实例化过程,它封装了对象的创建动作,使对象的创建可以独立.于系统的其他部分。

抽象工厂(Abstract Factory)

抽象工厂模式把对象的创建封装在一个类中,这个类唯一的任务就是按需生产各种对象,通过派生子类的方式抽象工厂可以生产不同系列的、整套的对象。工厂类通常是单件,以保证,在系统的任何地方都可以访问,其中的每个方法都是工厂方法。在较小的软件系统中,抽象工,厂有时候会退化成一个没有子类的简单工厂。

xpressive库有一个抽象工厂regex_compiler,可以生产各种正则表达式解析对象,但它用模板技术而不是继承实例化出了具体的工厂。

生成器(Builder)

生成器模式分解了复杂对象的创建过程,创建过程可以被子类改变,使同样的过程可以生产出不同的对象。生成器与抽象工厂不同,它不是一次性地创建出产品,而是分步骤逐渐地“装配”出对象,因而可以对创建过程进行更精细的控制。

Boost库没有生成器模式的具体应用,因为生成器模式主要用来构造复杂的对象,对于库来说复杂的创建过程会令库难以使用。

multi_array对象的创建过程类似生成器模式,它先用模板参数设定基本维数,然后再逐个指定各个维度,最后生成一个多维数组。

工厂方法(Factory Method)

工厂方法模式是另一种生产对象的方式,它把对象的创建封装在一个方法中,子类可以改变工厂方法的生产行为生产不同的对象。工厂方法所属的类不一定是工厂类(抽象工厂或者生成器),它可能是一个普通类、一个框架类,或者是一个自由函数。

Boost 库中的 make_shared () 、make_optional() 、make_tuple ()、regex<>:: complie ()等函数都属于工厂方法模式。而functional/factory组件则实现了对new操作符的完全封装,类似于泛化的make_pair ()、 make_optional()。

原型(Prototype)

原型模式使用类的实例通过拷贝的方式创建对象,具体的拷贝行为可以定制,它最常见的用法是为类实现一个clone()成员函数,这个函数创建,个与原型相同或相似的新对象。

weak_ptr的enable_shared _rom_this用法类似于一个原型模式,它创建了一个指向自身的shared_ptr, exception库提供了一个enable_current_exception()函数,它被用于线程安全地处理异常,返回一个clone的异常对象。

指针容器库pointer_container容纳的指针不允许共享,如果要拷贝指针容器,则需要被容纳的元素提供clone()操作,使用原型模式创建一个等价的副本。

单件(Singleton)

单件模式保证类有且仅有一个实例,并且提供一个全局的访问点。通常的全局变量技术虽,然也可以提供类似的功能,但它不能防止用户创建多个实例。单件的基本原理很简单,但有很,多实现的变化。

Boost库目前没有专门的单件库,但在serialization库提供了一个可用的实现。

结构型模式

结构型模式专注于如何组合类或对象,进而形成更大更有用的新对象。

组合对象有两种方式:第一种是C++语言本身提供的继承机制,但它在编译期就已经确定,了对象的关系,无法在运行时改变,缺乏足够的灵活性。第二种方法是运行时对象组合,不同的对象之间彼此互相独立,仅通过定义良好的接口通信协同工作,它更灵活和易于模块化,但因为组合方式富有变化而较难以理解。

适配器(Adapter)

适配器模式把一个类的接口转换(适配)为另一个接口,从而在不改变原有代码的基础上,复用原代码。它的别名wrapper更清晰地说明了它的实现结构:包装了原有对象,再给出一个新的接口。

array类是适配器模式的一个很好例子,它把原始数组适配成了符合STL标准的容器,
使数组可以与其他

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 19:35:55

80亿参数颠覆行业认知:MiniCPM-V 4.5引领端侧多模态AI新纪元

80亿参数颠覆行业认知&#xff1a;MiniCPM-V 4.5引领端侧多模态AI新纪元 【免费下载链接】MiniCPM-V 项目地址: https://ai.gitcode.com/OpenBMB/MiniCPM-V 导语 面壁智能最新发布的MiniCPM-V 4.5以80亿参数实现对720亿参数模型的性能超越&#xff0c;其创新的3D-Resa…

作者头像 李华
网站建设 2026/5/11 20:54:59

腾讯混元Hunyuan-A13B:重塑AI推理新格局的混合专家大模型

腾讯混元Hunyuan-A13B&#xff1a;重塑AI推理新格局的混合专家大模型 【免费下载链接】Hunyuan-A13B-Instruct Hunyuan-A13B-Instruct是一款基于混合专家架构的开源大语言模型&#xff0c;以13亿活跃参数实现媲美更大模型的卓越性能。其独特之处在于支持快慢双思维模式&#xf…

作者头像 李华
网站建设 2026/5/11 8:36:25

56、理解 TCP/IP 网络

理解 TCP/IP 网络 1. 网络硬件概述 网络硬件的核心功能是促进计算机之间的数据传输。常见的网络硬件具备多种有助于数据传输的特性,例如能够对发往特定远程计算机的数据进行寻址。当非网络硬件被用作网络介质时,由于缺乏这些特性,其效用可能会受到限制,或者需要额外的软件…

作者头像 李华
网站建设 2026/5/9 2:33:40

KeePassHttp终极指南:5分钟实现浏览器密码自动填充的完整方案

KeePassHttp终极指南&#xff1a;5分钟实现浏览器密码自动填充的完整方案 【免费下载链接】keepasshttp KeePass plugin to expose password entries securely (256bit AES/CBC) over HTTP 项目地址: https://gitcode.com/gh_mirrors/ke/keepasshttp 还在为记忆各种网站…

作者头像 李华
网站建设 2026/5/11 7:04:52

新榜小豆芽深度体验:数码科技创作者账号管理神器,轻松搞定多账号

在数码科技自媒体创作赛道上&#xff0c;创作者既要紧盯行业最新技术动态、打磨专业硬核的测评内容&#xff0c;又要同时运营多平台账号矩阵&#xff0c;而多账号登录切换繁琐、IP 关联触发风控、团队账号共享权限混乱等问题&#xff0c;曾长期拖慢我的创作节奏。直到用上新榜小…

作者头像 李华
网站建设 2026/5/11 5:02:53

12、畅享互联网:工具与使用指南

畅享互联网:工具与使用指南 1. 代理与浏览器插件 如果你处于一个连接到互联网的局域网(LAN)中,很可能会连接到代理服务器,相关信息由系统管理员提供。但如果你使用的是拨号账户,则可以忽略此选项。 浏览器插件有时会让人恼火,有些网站要求下载插件或额外软件才能访问…

作者头像 李华