![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++设计模式
文章平均质量分 71
thank86
我向佛祖许愿,希望有四种语言不学.
佛问,是哪四种.
我说:静态语言、动态语言、客户端语言、服务端语言.
佛说不行,只能三种.
我说那就机器语言、汇编语言、高级语言.
佛说不行,只能两种.
我说那就编译型语言、解释型语言.
佛说不行,只能一种.
我说那就编程语言.
佛哭了,说你踏马纯纯飞舞,找个厂上班去吧.
展开
-
C++设计模式PIMPL模式
这种模式的核心思想是将类的实现细节从其接口中分离出来。想象一下,我们生活的世界中充满了这种分离:我们不需要知道电视是如何工作的,只需要知道如何使用遥控器。同样地,Pimpl模式允许我们仅展示类的功能,而隐藏其内部工作方式。在C++中,头文件依赖是一个普遍的问题。当一个头文件改变时,所有包含这个头文件的源文件都需要重新编译。如果我们把所有这些都放在头文件中,那么任何小小的修改都会触发大量的重新编译。Pimpl模式通过将实现细节移到源文件中,避免了这个问题,从而使得头文件变得轻量级和稳定。原创 2024-07-26 11:17:01 · 360 阅读 · 0 评论 -
设计模式C++代理(Proxy)
参考视频:【设计模式(完整版)】https://www.bilibili.com/video/BV1Zd4y1t7HK?原创 2024-02-08 15:20:08 · 433 阅读 · 0 评论 -
设计模式C++享元
注:原视频:【设计模式(完整版)】这个设计模式比较少用,因为这个问题出现需要这个设计模式时一般都会从别的层面解决,比如数据库层面.原创 2024-02-07 15:27:46 · 548 阅读 · 1 评论 -
设计模式C++外观
分类:(对象)结构型问题:有一套复杂的视频系统,以及一套复杂的音频系统.希望简化使用流程,提供简化的操作面板.解决方案:为子系统中一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得子系统更加容易使用.开放用户真正关心的功能.原创 2024-02-04 14:46:40 · 466 阅读 · 1 评论 -
设计模式C++装饰
分类:(对象)结构型问题:饮料店订单系统,饮料有多种,并且可以选择加牛奶,冰激凌,巧克力等配料.解决方案:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更加灵活.找出基本组件和可选层次.原创 2024-02-02 14:49:23 · 729 阅读 · 0 评论 -
设计模式C++组合
分类:(对象)结构型问题:复杂订单的计算,有两类对象:产品和盒子.一个盒子中可以包含多个产品或多个小盒子.这些小盒子中同样可以包含一些产品或更小的盒子,以此类推.解决方案:将对象组成树形结构以表示"部分-整体"的层次结构.使得用户对单个对象和组合对象的使用具有一致性.原创 2024-02-01 14:20:47 · 758 阅读 · 1 评论 -
设计模式C++桥接
分类:(对象)结构型问题:遥控器和控制的设备属于同一个商品的组成部分.需要一个类能描述这样的商品,描述不同的遥控器和设备.解决方案:将抽象部分(遥控器中的按钮)与它的实现部分(实现遥控器按钮功能的设备)分离,使他们都可以独立的变化.即使用组合的方式来代替继承,将一个类层次转化为多个相关的类层次,避免单个类层次的失控.在抽象和实现间架起一座桥梁.原创 2024-01-31 15:18:12 · 469 阅读 · 0 评论 -
设计模式C++适配器
分类:(类)结构型,(对象)结构型问题:开发一款股票市场检测程序,会从不同来源下载XML格式的股票数据,然后向用户呈现出分析图表.但是,分析函数库只兼容JSON格式的数据.解决方案:讲一个类的接口转换为客户希望的另一个接口.使得原本不兼容的一些类可以一起工作.即创建一个适配器.这是一个特殊的对象,能够转换对象接口.原创 2024-01-30 11:21:54 · 1417 阅读 · 1 评论 -
设计模式C++单例模式
分类:(对象)创建型问题:对于一些类来说,只有一个实例是很重要的.例如数据库或其共享资源的访问权限.并且这个实例需要易于被访问.解决方案:保证一个类只有一个实例,并提供一个访问它的全局访问点.原创 2024-01-29 15:36:09 · 324 阅读 · 0 评论 -
设计模式C++原型(类似C++拷贝构造函数)
分类:(对象)创建型问题:希望复制一个状态完全相同的对象.首先,新建一个相同类的对象.然后,复制所有成员变量.但是,有时候不知道具体类型,而且成员变量可能是私有的.(从外部复制对象并非总是可行的)解决方案:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.即复制已有对象,而无需使代码依赖他们所属的类.(调用拷贝构造函数)原创 2024-01-27 19:40:18 · 320 阅读 · 0 评论 -
设计模式C++生成器(建造者模式)
分类:(对象)创建型问题:1.构造一个房屋,需要考虑是否有车库,游泳池,花园,雕塑等,需要对诸多成员变量进行初始化工作.都写在构造函数里?每种都可能创建一个新的类?2.相同的步骤需要能够产生不同的产品,例如使用木头和玻璃盖出来的是普通住房.用黄金和水晶建造出来的是宫殿.解决方案:讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.即将对象构造代码从产品类中抽取出来,并将其放在一个名为Builder的独立对象中.原创 2024-01-25 14:41:18 · 1791 阅读 · 0 评论 -
设计模式C++抽象工厂
分类:(对象)创建型问题:家具城里有沙发,椅子,茶几等产品.产品有不同风格,如现代,北欧风,工业.希望客户收到的出产品风格统一,并可以方便的添加新产品和新风格.(这里不同风格相当于苹果手机搭配安卓充电线,我们想要苹果手机搭配苹果充电线这种统一风格的来使用)解决方案:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们确定的类.原创 2024-01-24 15:54:45 · 1438 阅读 · 1 评论 -
设计模式C++工厂方法
分类:(类)创建型这个工厂方法就是一个像工厂一样的方法,而方法则是类的成员函数.就像养宠物一样,我们不希望让宠物到处乱跑,哪里都是它,把它关起来,限制活动区域到一定的大小.我们这里学习的就是具体怎么做.原则:把new关起来,实现创造者和产品松耦合(把创建的过程延迟到对象)问题:一个物流公司最初只使用卡车运输,现需要增加轮船运输业务.目前的程序代码只与卡车关联.(需要改变现有代码,同时考虑增加以后的别的业务)解决方案:定义一个用于创建对象的接口,让子类决定实例化哪一个类.factoryMethod使原创 2024-01-23 16:12:21 · 337 阅读 · 1 评论