C++设计模式
文章平均质量分 75
勿忘初
这个作者很懒,什么都没留下…
展开
-
设计模式之建造者模式
建造者模式 题外话:面向对象的一个重要指导思想就是,封装隔离变化的,留出不变的。 特点:一个对象的构建比较复杂,则将对象的构建和对象的表示(要被创建的产品)进行分离。 角色: Product:所要构建的复杂对象。 Builder:定义创建对象过程的抽象,提供构建不同组成部分的抽象接口。他和产品之间的关系是关联,即拥有一个产品属性的成员变量。 ConcreteBuil原创 2016-05-18 10:33:29 · 227 阅读 · 0 评论 -
设计模式总结
模式:在一定的环境下,用固定的套路解决问题。 设计模式的基础:多态(继承,虚函数重写,基类指针指向子类对象)。 设计模式理解:将简单的问题复杂化(标准化),将其不断拆分,方便用固定的套路去解决。 设计模式分为三类(23种): 创建型模式:用来处理对象的创建过程 1. 单例模式 2.工厂模式 3.抽象工厂模式 4.建造者原创 2016-05-18 11:29:28 · 253 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式 特点:定义对象间的一对多的依赖关系,即多个观察者和一个主题对象键的依赖关系。当主题对象状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 即一个改变时,依赖其的其他对象也会跟着更新自己。 模式中的四个角色: Subject 类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个借口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽原创 2016-05-12 22:06:49 · 219 阅读 · 0 评论 -
单例模式
单例模式:只能实例化一个对象的类 特点: 1)构造函数私有化 2)一个指向唯一实例的私有的静态指针变量 3)一个静态的公有函数来获取唯一实例 1.懒汉式 class Singleton{ private: Singleton(){//构造函数私有化 cout<<"execute"<<endl; } public: static Singleton *GetInsta原创 2016-05-05 22:08:50 · 194 阅读 · 0 评论 -
设计模式之适配器模式
http://blog.csdn.net/lcl_data/article/details/8780140 适配器模式 特点:将一个类的接口转换成客户希望的另一个接口。通过适配器模式可以改变已有类的接口形式。 涉及到的角色: 目标(Target)角色:这是客户所期待的接口。 源(Adaptee)角色:需要适配的类。 适配器(Adapter)角色:把源接口转换成目标接口。这一原创 2016-05-13 10:37:07 · 208 阅读 · 0 评论 -
设计模式之三种工厂模式
1.简单工厂模式 特点:简单工厂模式是工厂模式中最简单的一种,他可以用比较简单的方式隐藏创建对象的细节,一般只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类,但客户端看到的只是产品的抽象对象,无需关心到底是返回了哪个子类。每次添加一个产品子类都必须在工厂类中添加一个判断分支。 角色: 抽象工厂类 抽象产品类 具体产品类 class Fruit{ public: virtual原创 2016-05-13 11:13:31 · 217 阅读 · 0 评论 -
设计模式之对象池模式(Object Pool)
http://blog.csdn.net/wcyoot/article/details/7584574 http://www.cnblogs.com/west-link/archive/2011/09/05/2167149.html 对象池模式 今天忽然看到一个有趣的设计模式,就上网看了下,现做一个整理。 前期了解:Object Pool,即对象池,对象被预先创建并初始化转载 2016-05-19 10:21:09 · 8708 阅读 · 0 评论 -
设计模式之外观模式
外观模式 特点:外观模式其实定义了一个高层接口(将各个子系统的中的操作打包),该接口为多个子系统中的一组接口提供一个一致的界面,使得子系统更加容易使用。它对客户屏蔽了子系统组件,减少了客户处理的对象的数目,实现了子系统与客户之间的松耦合关系。 角色: 外观(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况原创 2016-05-17 21:55:59 · 202 阅读 · 0 评论 -
设计模式之模板模式
http://www.cnblogs.com/jiese/p/3180477.html 模板模式 特点:在抽象类中抽象出统一的一套操作步骤,里面有一个模板函数,它提前将业务逻辑制定好,即各个子函数的调用顺序提前规定好。但是这里只是含有各个子函数的逻辑申明,而各个子函数的具体实现是在其各个子类中实现的。 角色: AbstractClass是抽象类,其实也就是一个抽象模原创 2016-05-17 21:12:30 · 240 阅读 · 0 评论 -
设计模式之策略模式
http://blog.csdn.net/lcl_data/article/details/10255125 http://www.cnblogs.com/jiese/p/3181099.html 策略模式 特点:它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。 角色: Stragegy类,策略原创 2016-05-17 20:43:00 · 229 阅读 · 0 评论 -
设计模式之命令模式
命令模式 特点:针对3类对象(命令,命令的发起者,命令的实行者)。将每一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求进行管理(请求进行排队或记录请求日志,以及支持可撤销的操作)。 角色: Command类:用来声明执行操作的接口。 ConcreteCommand类:将一个接收者对象绑定与一个动作,调用接收者相应的操作,以实现Excute。原创 2016-05-17 11:24:30 · 241 阅读 · 0 评论 -
设计模式之组合模式
组合模式 特点:用于将对象组合成树状结构,展示出“部分--整体”的层次结构。这里,单个对象和组合对象具有相同的行为接口,使得用户对单个对象和组合对象的使用具有一致性,忽略组合对象和单个对象之间的差别。 角色: Component: 抽象基类,为组合中的对象声明接口,在适当情况下实现所有类共有接口的缺省行为。 Leaf: 在组合中表示叶节点子类,叶节点没有子节点,并定义其行为。原创 2016-05-16 22:05:37 · 226 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式 特点: 多对多的关系(多维元素在变化),仅用继承实现不太合理。Bridge用于将表示和实现解耦,两者可以独立的变化. 角色: Abstraction::Operation():定义要实现的操作接口。在Abstraction类中维护一个Implement类指针(成员变量),需要采用不同的实现方式的时候只需要传入不同的Implement派生类就可以了。 Implement:原创 2016-05-16 20:01:46 · 222 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式 特点: 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 角色: 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。 集合角色(Aggregate):集合角色负责提供创建具体迭代器角色的接口。 具体集合角色原创 2016-05-13 21:56:43 · 229 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式 题外话: 对一个类a进行功能性增强一般有一下几个方法: 1.直接对类a中代码进行修改; 2.创建一个新类,让它去继承类a; 3.进行内部关联,创建一个新类,让其包含一个a类变量。 角色: Component:定义一个对象接口,可以给这些对象动态地添加职责; ConcreteComponent:定义一个具体的Component,继承自Component,重写了Compo原创 2016-05-13 17:29:04 · 233 阅读 · 0 评论 -
设计模式之代理模式
代理模式 特点:a类(proxy类)中包含b类(realsubject类),a,b类实现协议类(subject类,即共同接口)。 角色: subject类,定义realsubject与proxy的共用接口,这样在任何使用realsubject的地方都可以使用proxy代替。 realsubject类,定义proxy所代表的实体,拥有一个和subject类相同的接口。 proxy类原创 2016-05-13 16:15:06 · 227 阅读 · 0 评论