C++设计模式
网上写的设计模式很少有关于C++的,而且大多数用C++写成的往往存在各种问题,如内存泄漏等等,而且讲的晦涩难懂,学习设计模式的时候感到很痛苦,想写一个很容易被理解的设计模式
CHENG Jian
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
展开
-
C++设计模式13----Flyweight享元模式
Flyweight享元模式概述 作用:运用共享技术有效地支持大量细粒度的对象。 内部状态intrinsic和外部状态extrinsic: 1)Flyweight模式中,最重要的是将对象分解成intrinsic和extrinsic两部分。 2)内部状态:在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态 3)外部状态:而随环境改变而改变的,取决于应用环境原创 2015-02-09 20:46:33 · 13255 阅读 · 6 评论 -
C++设计模式12--建造者模式----创建复杂对象的工程师
建造者(Builder)模式 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 对象性质的建造 有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发原创 2014-03-19 09:36:49 · 17373 阅读 · 2 评论 -
C++设计模式11-组合模式----靠着大树好乘凉
定义 (GoF《设计模式》):将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组成 ① Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 ② Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。 ③ Composite 定义有枝原创 2014-03-18 15:05:05 · 17845 阅读 · 0 评论 -
C++设计模式9--代理模式--万能的中间层
代理模式--万能的中间层 引言 曾经看到过这样一句话,忘了是哪位大神说的了(只记得是在程序员的自我修养这本书里看到的,这里特别提一下这本书,是因为我的好多零碎的知识点都是在这本书里学到的,所以特别纪念一下),那句话大致是这么个意思,”计算机中的所有功能都可以通过增加一个中间层来实现”。这个中间层其实就是代理。 代理模式被定位为:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下原创 2014-03-18 13:36:56 · 18255 阅读 · 0 评论 -
C++设计模式10--命令模式(二)(Command)--降低请求发送者与接收者耦合
工作了一天感觉好累,洗了个澡,打开电视看看有没有喜欢的节目,拿起遥控器,看着上面的按钮,忽然感觉好奇妙,我们按一开机键,电视就开了,然后...哈哈,真好玩,我按我按。细想之下这不就是一个命令模式么。 电视机遥控器: 电视机是请求的接收者Receiver, 遥控器是请求的发送者ConcreteCommand, 遥控器上有一些按钮,不同的按钮对应电视机的不同操作。 抽象命令角色由一个命原创 2014-01-09 16:40:19 · 19504 阅读 · 0 评论 -
C++设计模式10--命令模式(一)--降低请求发送者与接收者耦合
命令模式概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern) 工作了一天感觉好累,洗了个澡,打开电视看看有没有喜欢的节目原创 2014-01-09 16:23:37 · 20063 阅读 · 0 评论 -
C++设计模式8--装饰模式(Decorator)--动态的增减功能
新奇的IPad 快到媳妇生日了,这几天加班加点的干活,给媳妇买了个IPadMini,可把媳妇乐坏了,媳妇拿到手第一天,就跑出去跟姐妹们得瑟了一把。 #include using namespace std; class Pad { public: Pad(){ } virtual ~Pad(){ } virtual void Show( ) = 0; }; class IPa原创 2014-01-09 10:04:33 · 21560 阅读 · 1 评论 -
C++设计模式7--外观模式--The Client don't want to know
1基本信息 共有两类适配器模式: 对象适配器模式 -- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 类适配器模式 -- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。 2解释 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——G原创 2014-01-08 16:23:09 · 20201 阅读 · 0 评论 -
C++设计模式6--原型模式Prototype--原始对象的克隆
原型模式概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 应对问题 它主要面对的问题是:“某些结构复杂的对象”原创 2014-01-08 15:30:32 · 20860 阅读 · 2 评论 -
C++设计模式5--单例模式Singleton--当前对象只有一个实例
很多情况下,我们在开发项目的过程中,都希望自己运行的某个部件只有一个实例, 比如我们天天用QT开发界面,QTCreate里帮助菜单下的关于Qt Create菜单,弹出来的关于对话框,在QTCreate运行过程中,不论单击多少次,弹出的总是同一个对话框,这里的关于对话框就是一个单例模式实现的对象。 再比如说我们经常用的Windows下的任务管理器,无论打开多少次,同时同一个任务管理器对话框。原创 2014-01-08 13:25:50 · 22687 阅读 · 0 评论 -
C++设计模式4--桥接模式--处理多维度的需求变化
引言 桥接模式就将要解决什么样的问题呢?我们具几个显示中的例子来加深理解 例子一 拿汽车在路上行驶的来说。即有轿车,又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于不同的交通工具,行驶在不同的环境中,每个都作为一个需求,我们会有很多种可能的需求, 例子二 再比如说我们每天用的电脑,有各种牌子的,什么Dell,Hp,Acer,Lenovo,Ap原创 2014-01-08 11:00:06 · 20421 阅读 · 0 评论 -
C++设计模式3-适配器模式Adapter-不兼容结构的接口协调
0导言 我们笔记本电脑的工作电压是20V,而家庭额定电压220V,如何让20V的笔记本电脑能够在220V的电压下工作?为了解决这种问题,我们引入了一个电源适配器(AC Adapter),俗称充电器,有了这个电源适配器,生活用电和笔记本电脑即可兼容 同样在软件开发中,有时也存在类似这种不兼容的情况,我们也可以像引入一个电源适配器一样引入一个称之为适配器的角色来协调这些存在不兼容的结构,这种设原创 2014-01-08 10:07:17 · 20844 阅读 · 0 评论 -
C++设计模式2-原型模式Prototype
一 原型模式描述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象, 根本无需知道任何如何创建的细节, 工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 二 解决的问题:原创 2014-01-07 15:51:03 · 20576 阅读 · 0 评论 -
C++设计模式之1-工厂模式
(一)工厂模式描述 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 用途:工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,降低耦合度 达到提高灵活性的目的。 类图: 现在一般看来将工厂模式分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factor原创 2014-01-07 09:04:47 · 23401 阅读 · 5 评论 -
简单工厂模式,工厂方法模式和抽象工厂模式的异同
简单工厂模式,工厂方法模式和抽象工厂模式的异同 简单工厂模式,工厂方法模式和抽象工厂模式都是属于创建型设计模式,这三种创建型模式都不需要知道具体类。我们掌握一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化(哪里变化,封装哪里),以适应客户的变动,项目的扩展。用这三种设计模式都可以实现,那究竟这三种设计模式有什么异同呢?下面根据这三者之间的特点,优点,缺点,适用转载 2013-12-24 11:08:00 · 25170 阅读 · 2 评论 -
24种设计模式与7大原则
创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示. 工厂模式(factory method patte转载 2013-12-24 10:15:21 · 22934 阅读 · 2 评论