
c++设计模式
c++设计模式
却道天凉_好个秋
这个作者很懒,什么都没留下…
展开
-
设计模式浅析——桥模式
桥模式(Bridge)定义将抽象部分(业务功能)与实现部分(平台实现)分离,使他们都可以独立的变化。桥模式结构图示例代码#include <iostream>using namespace std;class MessagerImp{public: virtual void Display() = 0; virtual void PlaySound() = 0; virtual ~MessagerImp() {}};//平台抽象class PCMes原创 2020-09-15 00:48:21 · 308 阅读 · 0 评论 -
设计模式浅析——解析器模式
解析器模式(Interpreter)定义给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解析语言中的句子。解析器模式结构图示例代码#include <map>#include <stack>#include <iostream>using namespace std;//AbstractExpression 定义一个抽象表达式class Expression{public: virtual int In原创 2020-09-13 19:50:21 · 262 阅读 · 0 评论 -
设计模式浅析———职责链模式
职责链模式(Chain of Responsibility)定义将多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。职责链模式结构图示例代码#include <iostream>#include <memory>using namespace std;class Handle{protected: Handle* m_pHandle = nullptr;p原创 2020-09-08 23:24:49 · 139 阅读 · 0 评论 -
设计模式浅析——组合模式
组合模式(Composite)定义将对象组合成树形结构以表示"部分-整体"的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。组合模式结构图示例代码class Component{public: virtual void OnShow() = 0; virtual ~Component() {}};//树节点class Composite : public Component{private: std::string strName原创 2020-09-05 18:38:28 · 117 阅读 · 0 评论 -
设计模式浅析——中介者模式
中介者模式(Mediator)定义用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各个对象不需要显示的相互引用(编译时依赖变为运行时依赖),从而使其耦合松散(管理变化),而且可以独立的改变他们之间的交互。中介者模式结构图代码示例#include <iostream>using namespace std;class Colleague;class Mediator{public: virtual void ProcessMsg(const std:原创 2020-08-28 00:44:01 · 109 阅读 · 0 评论 -
c++11总结07——改进单例模式
泛型单例存在的问题:泛型单例要能够创建所有的类型对象,但是这些类型的构造函数形参不尽相同,参数个数和参数类型可能都不相同,导致我们不容易做一个所有类型都通用的单例。c++11借助可变参数模板实现单例(上代码)#include <iostream>using namespace std;template <typename T>class Singleton{public: template<typename... Args> //可变参数原创 2020-08-25 00:44:39 · 463 阅读 · 0 评论 -
设计模式浅析——门面模式
1. 门面模式(facade)定义为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2. 门面模式结构图3. 代码示例4. 个人总结1) 从客户程序的角度来看,门面模式简化了组件系统的接口,达到一种"解耦"的效果,同时内部子系统的变化不会影响到facade接口的变化。仅为子系统提供一组对外的接口。2) Facade模式更加注重从架构的层次看整个系统,因而也可以看作是一种结构设计模式。3) Facade模式中原创 2020-08-24 22:55:54 · 176 阅读 · 0 评论 -
设计模式浅析——单例模式
1. 单例模式(Singleton)定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。2. 单例模式结构图3. 单例模式几种实现方式(上代码)class Singleton{private: Singleton(); //构造函数私有(外界不能使用) Singleton(const Singleton& other); //拷贝构造函数私有public: sta...原创 2020-08-21 00:47:46 · 234 阅读 · 0 评论 -
设计模式浅析——装饰模式
1. 装饰(Decorator)模式定义动态(组合)的给一个对象增加一些额外的职责。就增加功能而言,装饰模式比生成的子类(继承)更为灵活(a. 消除重复代码 b.减少子类个数)。2. 装饰模式结构图3. 个人示例代码class Product{public: virtual void CreateProduct() = 0; virtual ~Product() {} //虚析构函数};class ConcreteProduct : public P...原创 2020-08-19 00:45:07 · 133 阅读 · 0 评论 -
设计模式浅析——工厂模式
1. 工厂模式定义定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使得一个类的实例化延迟(目的:解耦 手段:虚函数)到子类。补充:编译时依赖和运行时依赖编译依赖:export LIBRARY_PATH=${HOME}/local/lib:$LIBRARY_PATHexport PKG_CONFIG_PATH=/usr/share/pkgconfig:${HOME}/local/lib/pkgconfig运行库依赖:export LD_LIBRARY原创 2020-08-13 00:41:40 · 192 阅读 · 0 评论 -
面向对象的八大设计原则[GOF设计模式]
依赖倒置原则高层模块不依赖于底层模块,两者依赖于抽象; 抽象不依赖于细节,细节应依赖于抽象;实际项目开发中,应该以构建一种能力为目的,开发一个模块不能只考虑当前功能的实现,应使代码具有良好的扩展性。开放封闭原则对扩展开放,对更改封闭; 类模块应该是可扩展的; 我们在定义接口后尽可能保证接口层稳定在设计程序之初,应充分考虑接口的稳定性,在需求需要更改的情况下,尽量保持原有接口不改变,而是通过新加接口来实现功能。单一职责原则一个类尽量只实现一个功能,这样使类变化的原因会减少; 如原创 2020-08-07 00:21:21 · 198 阅读 · 0 评论