设计模式C++
文章平均质量分 89
xiao-ren-wu
这个作者很懒,什么都没留下…
展开
-
备忘录模式
Originator(原生者) 需要被保存状态以便恢复的那个对象。 Memento(备忘录) 该对象由Originator创建,用来保存Originator的内部状态 Caretaker(管理者) 负责在适当的时间保存/恢复Originator对象的状态 适用于: 在不破坏疯转的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到之前保存的状态。原创 2017-11-13 00:36:34 · 344 阅读 · 0 评论 -
原型模式
概念: Prototype模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型模式一样的数据。 1)由原型对象自身创建对象,也就是说,对象的创建这一动作发自原型对象的本身。 2)目标对象是原型对象的一种克隆,也就是说,通过原型模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象有相同的值。 3)根据对象克隆深度层次的不同原创 2017-11-12 20:34:57 · 193 阅读 · 0 评论 -
建造者模式
概念: Bulider模式也叫做建造者模式或者生成器模式。 Bulider模式是一种对象创建型模式,用来隐藏复合对象的创建过程,他把符合对象的创建过程加以抽象,通过子类继承和重载的方式,动态的创建具有复合属性的对象。 对象的创建:Bulider模式是为对象的创建而设计的模式,创建的是一个复合对象;被创建的对象为具有一个复合属性的复合对象,关注对象创建的各部分创建过程,不同的生成器对对象的属性有原创 2017-11-12 19:01:06 · 251 阅读 · 0 评论 -
策略模式(行为类模式)
结构图 案例; 定义一组算法,将每个算法都封装起来,并使他们之间可以互换。 实现: class Strategy{ public: virtual void crypt() = 0; virtual ~Strategy(){} };class AES :public Strategy{ public: virtual void crypt(){ co原创 2017-10-25 22:33:26 · 245 阅读 · 0 评论 -
桥接模式(构造型设计模式)
概念 Bridge模式又叫做桥接模式,是构造型的设计模式之一,Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任,他的主要特点是保持各个部分的独立性以及对他们的拓展功能。 结构图 需求 现有发动机Engine4400c,Engine4500c,车BMW5 ,BMW5 ,通过桥接实现车和发动机的任意组合。 class Engine{ publi原创 2017-10-25 22:24:05 · 268 阅读 · 0 评论 -
组合模式(结构型设计模式)
结构图 单个对象和组合对象的使用具有一致性,将对象组合成树状结构以表示“整体—部分” 文件和文件夹的案例: 实现 class IFile{ protected: string name; public: virtual void display() = 0; virtual ~IFile(){} }; class File :public IFile{ public原创 2017-10-25 22:14:50 · 219 阅读 · 0 评论 -
模板模式(行为型模式)
结构图 类中的方法通过虚化的方式,使得在客户端无法访问,只能通过另一个可以访问的函数,通过this进行调用。 实现class Base{ protected: virtual void primitive1() = 0; virtual void primitive2() = 0; public: void template1(){ this->pri原创 2017-10-25 22:08:14 · 194 阅读 · 0 评论 -
访问者模式(行为模式)
概念 分离对象的数据和行为,使用访客模式,可以不修改类的情况下,增加操作角色和职责。 结构图 优点: 1.访问者模式使得增加新的操作变得很容易,如果一些操作依赖于一个复杂的结构对象的话,那么一般而言操作会变得很复杂,而使用访问者模式,增加新的操作意味着增加一个新的访问者类,因此变得很容易。 2.访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个节点类中。 3.访问者模式可以原创 2017-10-25 11:13:41 · 260 阅读 · 0 评论 -
代理模式(结构型设计模式)
Proxy模式又叫做代理模式,是结构型的设计模式之一,他可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。 所谓代理,是指具有与代理元(被访问的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互模式过程中(交互前后),进行某些特别的处理。 结构图: eg: 现有一个红酒厂,需要代理卖红酒,客户端通过代理,得到红酒。 实现:class B原创 2017-10-13 13:39:14 · 245 阅读 · 0 评论 -
责任链
Chain of Responsibility 模式也叫责任链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来完成同一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。 结构图 具体应用 软件窗口的消息传递。 servlet容器的过滤器(Fliter)框架实现 eg: 现需要造车,造车分为三部分:早车头,造车身,造车尾。利用职责连实原创 2017-10-21 14:06:32 · 241 阅读 · 0 评论 -
单例模式
单例模式是一种对象创建模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。 类图 为什么使用单例模式? 在应用开发中,常常有如下需求: *在多线程之间只初始化一个资源。 *在整个程序空间中使用全局变量共享资源。 *在大规模系统中,为了性能考虑,以及需要节省兑现的创建时间等等。 懒汉式class Singelton{ priv原创 2017-10-05 22:04:17 · 150 阅读 · 0 评论 -
设计模式相关基础知识
设计模式的最终目的:高内聚,低耦合 设计模式的原则: 1)开放封闭原则: 类的改变是通过增加代码进行的,而不是修改代码 案例展示: 2)单一的职责原则: 类的职责要单一,只对外提供一种功能,而引起类变化的原因都应该只有一个 3)依赖倒置原则: 依赖于(抽象)接口,不要依赖具体的实现(类),也就是针对接口编原创 2017-10-05 20:53:01 · 250 阅读 · 0 评论 -
适配器模式(结构型设计模式)
概念 通过适配器模式可以改变已有类的接口。 适配器的意义 那不同接口调用转换成相同接口的调用,并实现了代码的复用 结构图: 需求: 现有一个家用电器需要使用18V的电源,但是只有220V的电源,通过适配器完成家用电器的使用。 代码实现:class Current18V{ public: virtual void useCurrent18V() = 0; }; class C原创 2017-10-06 22:35:41 · 469 阅读 · 0 评论 -
工厂模式
1.简单工厂模式:(简单工厂模式不属于23种设计模式) 结构图: 优点:统一接口 缺点:违背了“开闭原则” 代码实现: 生产类:class Product{ public: virtual void getName() = 0; }; class ProductA:public Product{ public: void getName(){ cout原创 2017-10-06 21:22:55 · 369 阅读 · 0 评论 -
中介者模式(行为模式)
概念: 用一个中介对象来封装一系列的对象交互,中介者使用各对象不需要显示相互引用,从而降低耦合,而且可以独立地改变他们之间的交互。 适用于:用一个中介对象,封装一系列对象的交换,中介者是各个对象不需要显示的相互作用,从而实现了耦合松散,而且可以独立的改变他们之间的交换。 模式有点: 1.将系统按照功能分割成更小的对象,符合类的最小设计原则, 2,对关联对象的集中控制 结构图: 需求原创 2017-11-13 17:35:18 · 291 阅读 · 0 评论