![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 88
学习设计模式,使用C++语言
天山老妖的混世牛魔王
这个作者很懒,什么都没留下…
展开
-
桥接模式
一、桥接模式简介1、桥接模式简介桥接模式将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。桥接模式将抽象和实现分别独立实现,即Abstraction类和Implement类。桥接模式中的实现不是指抽象基类的具体子类对抽象基类中虚函数(接口)的实现,是指怎么去实现用户的需求,即在Implement具体类中实现Abstraction的接口功能,并且是通过组合(委托)的方式实现的,因此桥接模式中实现不是指的继承基类、实现基类...原创 2021-05-05 16:11:15 · 1754 阅读 · 0 评论 -
外观模式
一、外观模式简介1、外观模式简介为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。根据单一职责原则,在软件系统中将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(Facade)对象,外观类为子系统中较一般的设施提供了一个单一而简单的界面。将各个子系统整合起来作为Facade,提供给客户端使用。外观模式...原创 2021-05-05 14:23:48 · 111 阅读 · 0 评论 -
代理模式
一、代理模式简介1、代理模式简介代理模式是为其他对象提供一种代理以控制对对象的访问。常见代理模式如下:A、远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador),为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地址空间的事实。B、虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真...原创 2021-05-05 12:55:02 · 578 阅读 · 0 评论 -
装饰模式
一、装饰模式简介1、装饰模式简介装饰器模式可以动态地给一个对象添加一些额外的职责。装饰模式的特点:A、装饰对象和真实对象有相同的接口。客户端对象可以使用和真实对象相同的方式和装饰对象交互。B、装饰对象包含一个真实对象的索引(reference)C、装饰对象接受所有的来自客户端的请求,并把请求转发给真实的对象。D、装饰对象可以在转发来自客户端的请求以前或以后增加一些附加功能。可以确保在运行时,不用修改给定对象的结构就可以在外部增加附加的功...原创 2021-05-05 11:38:11 · 233 阅读 · 0 评论 -
原型模式
一、原型模式简介1、原型模式简介原型模式使用原型实例指定创建对象的种类,并且通过拷贝原型对象创建新的对象。Prototype模式提供了一个通过已存在对象进行新对象创建的接口(clone),clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又大大提高了性能。因为如果不用clone,每次new...转载 2021-05-03 15:17:38 · 61 阅读 · 0 评论 -
创造者模式
一、建造者模式简介1、建造者模式简介建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式和抽象工厂模式在功能上很相似,都是用来创建大的复杂的对象,区别是:建造者模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说建造者模式中对象不是直接返回的。而在抽象工厂模式中对象是直接返回的,抽象工厂模式强调的是为创建多个相互依赖的对象提供一个同一的接口。建造者模式最主要功能是基本方法的调用顺序安排,即对象的组装顺序...原创 2021-05-03 09:30:38 · 789 阅读 · 0 评论 -
抽象工厂
一、抽象工厂模式1、抽象工厂模式简介定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。UML类图:2、抽象工厂模式角色(1)抽象工厂AbstractFactory:抽象工厂类,提供创建两种产品的接口CreateProductA和CreateProductB,由派生的各个具体工厂类对其实现(2)具体工厂:包括具体工厂FactoryM和具体工厂FactoryN。具体工厂FactoryM用于生产具体产品MProductA和具体产品MProductB...原创 2021-05-03 08:03:58 · 120 阅读 · 0 评论 -
工厂方法
一、工厂方法模式简介1、工厂方法模式简介工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法将一个类的实例化延迟到其子类。对每一个子类产品都分别对应一个工厂子类,用来创建相应的产品,若增加了新的产品,只需相应增加工厂子类即可。工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得工厂方法可以被子类继承。工厂方法模式特点:(1)工厂方法模式是对简单工厂模式的稍微的改进。工厂方法模式的用意是定义一个...原创 2021-05-02 23:11:44 · 2623 阅读 · 0 评论 -
简单工厂
一、简单工厂模式简介1、简单工厂模式简介简单工厂模式(Simple Factory Pattern)属于创建型模式,又称静态工厂方法(Static Factory Method)模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式UML图如下:简单工厂模式解决的问题是如何去实例化一个合适的对象。简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的...原创 2021-05-02 22:54:33 · 119 阅读 · 0 评论 -
适配器模式
Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。分为类适配器模式和对象适配器模式。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式。比如购买的第三方开转载 2021-05-02 17:25:08 · 61 阅读 · 0 评论 -
策略模式
策略模式---使用C++ 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍策略模式的实现。 策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算...原创 2021-05-02 17:05:28 · 74 阅读 · 0 评论 -
观察着模式
观察者模式 详解Observer 模式应该可以说是应用最多、影响最广的模式之一,因为 Observer 的一个实例 Model/View/Control( MVC) 结构在系统开发架构设计中有着很重要的地位和意义, MVC实现了业务逻辑和表示层的解耦。在 MFC 中, Doc/View(文档视图结构)提供了实现 MVC 的框架结构。在 Java 阵容中, Struts 则提供和 MFC 中 Doc/View 结构类似的实现 MVC 的框架。另外 Java 语言本身就提供了 Observer 模式的实现接原创 2021-05-02 16:24:34 · 87 阅读 · 0 评论 -
单例模式
C++实现线程安全的单例模式1、单例模式 一个简单的单例模式很容易实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。class singleton{protected: singleton(){}private: static singleton* p;public: static singleton* in...原创 2021-05-02 16:05:11 · 82 阅读 · 0 评论