C++设计模式
mrailence
这个作者很懒,什么都没留下…
展开
-
c++ 设计模式之观察者模式
1 何为观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。2 观察者模式的作用: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己3 观察者模式类图原创 2016-08-31 18:44:10 · 360 阅读 · 0 评论 -
c++ 设计模式之命令(Command)模式
1 command 模式的真正作用就是将行为请求者与行为实现者分离开, 下图是 命令的模式的类图: 现在我们将这个图实例化成客户进放点点餐。 Clinent: 相当于客户 Invoker :相当于服务员,服务员接受客户所有的点菜指令,即command , ConcreterCommand : 相当于具体的指令,比如是点米饭,还是 点面条,要绑定原创 2016-09-02 14:34:50 · 793 阅读 · 0 评论 -
C++ 设计模式之建造者模式
作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回原创 2016-11-02 16:51:53 · 354 阅读 · 0 评论 -
c++ 设计模式之外观模式
外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用#include "stdafx.h"#includeusing namespace std;class SubSystemOne{public: void MethodOne() { cout<<" this is system one "<<原创 2016-11-02 14:42:21 · 225 阅读 · 0 评论 -
设计模式之代理模式
Proxy代理模式作用:为其他对象提供一种代理以控制对这个对象的访问。代理的种类:如果按照使用目的来划分,代理有以下几种:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。 也就是为一个对象在不同的地址空间提供局部代表。这原创 2016-11-02 13:49:01 · 252 阅读 · 0 评论 -
c++设计模式之原型模式(prototype)
作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。代码如下:#pragma once #includeusing namespace std;class Pro原创 2016-11-09 19:10:10 · 481 阅读 · 0 评论 -
c++ 设计模式之桥接模式(Bridge)
作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化。将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。《大话设计模式》中就Bridge模式的解释:原创 2016-11-09 18:35:02 · 2328 阅读 · 1 评论 -
c++设计模式之组合模式(composite)
Composite组合模式作用:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。UML图如下:在Component中声明所有用来管理子对象的方法,其中包括Add、Remove等,这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对于外界没原创 2016-11-09 13:39:04 · 394 阅读 · 0 评论 -
c++设计模式之享元模式
Flyweight享元模式作用:运用共享技术有效地支持大量细粒度的对象。类图如下:内部状态intrinsic和外部状态extrinsic:1)Flyweight模式中,最重要的是将对象分解成intrinsic和extrinsic两部分。2)内部状态:在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态3)原创 2016-11-08 11:23:12 · 460 阅读 · 0 评论 -
C++ 设计模式之中介者模式
Mediator中介者模式作用:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。类图:下面是代码实例:#include"stdafx.h"#include#includeusing namespace std;//class Mediator;class Colleage;原创 2016-11-07 14:18:09 · 359 阅读 · 0 评论 -
c++ 设计模式之适配器模式
Adapter适配器模式作用:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。分为类适配器模式和对象适配器模式。系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。原创 2016-11-03 18:27:20 · 814 阅读 · 0 评论 -
C++ 设计模式之模板方法模式
1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。3 类图:原创 2016-11-03 14:54:29 · 314 阅读 · 0 评论 -
C++ 设计模式之装饰者模式
1 装饰模式的类图:2装饰着模式(Decorator): 动态的给一个对象添加一些额外的职责. 比如java.io包. BufferedInputStream封装了FileInputStream, 它们都实现了InputStream接口, 但前者实现了readLine方法.3 代码实例: #include#includeusing namespace std;cl原创 2016-09-19 15:52:27 · 299 阅读 · 0 评论 -
c++ 设计模式之策略模式
1 下面是策略模式的类图:Context(应用场景):1、需要使用ConcreteStrategy提供的算法。2、内部维护一个Strategy的实例。3、负责动态设置运行时Strategy具体的实现算法。4、负责跟Strategy之间的交互和数据传递。Strategy(抽象策略类):定义了一个公共接口,各种不同的算法以不同的方式实现这个接原创 2016-09-19 11:33:17 · 391 阅读 · 0 评论 -
设计模式之单例模式
1 何为单例模式 单例模式专业英文术语称之为 singleton,单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。更通俗一点的解释就是:如果一个类始终只能创建一个实例,则这个类被称为单例类,这种模式就被称为单例模式。2 优点和缺点 优点: 确保所有对象都只访问唯一的实例 缺点: 对象的生存原创 2016-08-24 11:21:03 · 246 阅读 · 0 评论 -
c++ 设计模式之备忘录模式(Memento)
Memento模式作用:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。Originator:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。Memento:原创 2016-11-07 16:58:51 · 488 阅读 · 0 评论