C++设计模式
理论到实战的路还很长,编程思想无穷无尽
&动感超人
读书笔记,不求甚解!
展开
-
C++设计模式——结构型模式之代理模式(Proxy)
代理模式(Proxy):是一种程序设计最为重要的一种模式,其具体的使用非常广泛,根据它的作用,其实我们可以直接理解为中间件或者中间层,比如各类软件的中间件,软件与硬件中的中间层。Subject: 声明真实对象和代理对象的共同接口。Proxy: 代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。RealSubject: 它代表着真实对象,是最终实现功能的具体对原创 2020-09-15 18:43:55 · 239 阅读 · 0 评论 -
C++设计模式——结构型模式之组合模式(Composite)
组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式为了描述分支包含关系,也就是我们说的树形关系,其对象分为枝和叶,每一枝可包含枝和叶,直到全部为叶节点。我们对枝和叶进行行为抽象,可认为枝和叶都是Component,而叶是最小的操作单元,其下不存在枝和叶,而枝作为Composite里面存有其下枝和叶的组件列表。上述的结构图中关于叶对节点的操作方法只保留了Operator的功能,其他的如add、remove、ge原创 2020-09-12 00:00:04 · 131 阅读 · 0 评论 -
C++设计模式——结构型模式之桥接模式(Brige)
桥接模式(Brige):将抽象部分和它的实现部分分离,使它们都可以独立的变化。当一个抽象可能有多个实现时,通常用继承来协调它们;抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但有时候此方法不够灵活,因为继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立的进行修改、扩充和重用;桥接模式把依赖具体实现,提升为依赖抽象,来完成对象和变化因素之间的低耦合,提高系统的可维护性和扩展性。桥接模式的主要目的是将一个对象的变化与其它变化隔离开,让彼此之间的耦合度最低。Ab原创 2020-09-11 23:37:15 · 507 阅读 · 0 评论 -
C++设计模式——结构型模式之装饰器模式(Decorator)
装饰器模式(Decorator)是动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活;装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。Component:定义一个对象的对外接口,将通过这个接口来实现对象动态地添加职责; ConcreteComponent:定义一个具体的Component,继承自ConcreateComponent,重写了Component类的虚函数; Decorator:维持一个指向Component对象的指针,该指针指向需要原创 2020-09-11 23:00:38 · 224 阅读 · 0 评论 -
C++设计模式——结构型模式之适配器模式(Adapter)
结构型模式之适配器模式(Adapter)适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式有“类适配器”和“对象适配器”两种不同的形式。上图是适配器模式的第一种实现形式,适配器Adapter继承自Target和Adaptee类,Adapter类需要重写Target类的Request函数,在Request中做适当的处理,调用Adaptee类的SepcificRequest。最终,Target...原创 2020-09-10 19:34:12 · 146 阅读 · 0 评论 -
C++设计模式——创建型模式之原型模式(Prototype)
原型模式是用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象;这这个定义中,最重要的一个词是“拷贝”,也就是原型模式的精髓所在;其中Clone就是对原型实例对象的拷贝,它封装了其中的拷贝细节,用户并不需要关心起内部的实现;在C++一般通过拷贝构造函数来实现;当然一提到拷贝构造函数,必然会涉及到浅拷贝和深拷贝的问题;原型模式看似很简单,但拷贝的细节还是很多的(这里并不去讨论拷贝相关的细节)。#include <iostream>using namespace std;原创 2020-09-04 22:08:31 · 138 阅读 · 0 评论 -
C++设计模式——创建型模式之建造者模式(Builder)
创建型模式之建造者模式(Builder)建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder:抽象的创造者,为创建一个产品对象的各个部件指定抽象的接口;ConcreteBuilder:具体建造者,实现抽象Builder定义的接口来完成产品的各个部件的创建。Director:指挥者,它是一个使用Builder接口的对象;Product:具体的产品对象。代码框架#include <iostream>#原创 2020-09-03 22:57:51 · 232 阅读 · 0 评论 -
C++设计模式——创建型模式之单例模式(Singleton Pattern)
单例模式(Singleton Pattern)单例 Singleton 是一种只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例;在使用单例模式时需要注意一下几点:全局只有一个实例并同时禁止用户定义实例(构造函数设为 private) 线程安全 禁止赋值和拷贝 用户通过接口获取实例懒汉式的单例模式下面这个单例模式中,处理了线程安全的问题,当多线程获取单例时有可能引发竞态条件:第一个线程在if中判断p是空的,于是开始实例化单例;同时第2个线程也尝试获取.原创 2020-09-01 18:21:34 · 191 阅读 · 0 评论 -
C++设计模式——创建型模式之工厂模式
简单工厂模式为了提高内聚和松耦合,我们经常会抽象出一些类的公共接口以形成抽象基类或者接口;这样可以通过声明一个指向基类的指针指向实际的子类来实现,达到多态的目的;但是当子类对象很多时,就会给创建带来麻烦,并造成扩展性和维护性困难。简单工厂是对类的创建进行封装,通过参数来控制子类对象的创建。class Product {};class ProductA : public Product{};class ProductB : public Product {};class Product原创 2020-09-01 15:52:24 · 214 阅读 · 0 评论