代码改变世界

随笔分类 -  设计模式

访问者模式

2015-02-01 17:52 by itwolf, 465 阅读, 收藏, 编辑
摘要: 一、简介1、访问者模式表示一个作用于某对象结构中各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2、模式中的成员角色访问者(Visitor) :访问者抽象接口,通过visit(Element)方法访问Element(数据结构),完成对Element的操作行为。具体访问者... 阅读全文

解释器模式

2015-02-01 11:36 by itwolf, 243 阅读, 收藏, 编辑
摘要: 一、简介1、解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2、类成员(1)AbstractExpression(抽象表达式):声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。(2)TerminalExpression(终结符... 阅读全文

享元模式

2015-02-01 10:20 by itwolf, 200 阅读, 收藏, 编辑
摘要: 一、简介1、享元模式运用共享技术有效地支持大量细粒度的对象。2、享元模式是为了减少同种类的实例化,以达到节省内存的目的。3、类成员函数抽象享元类(Flyweight)它是所有具体享元类的超类。为这些类规定出需要实现的公共接口,那些需要外蕴状态(Exte的操作可以通过方法的参数传入。抽象享元的接口使得... 阅读全文

中介者模式

2015-02-01 09:41 by itwolf, 192 阅读, 收藏, 编辑
摘要: 一、简介1、中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的交互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。2、成员类Mediator:中介者接口。在里面定义了各个同事之间相互交互所需要的方法。ConcreteMediator:具体的中介者实现对象。它需要了解... 阅读全文

职责链模式

2015-01-28 22:23 by itwolf, 201 阅读, 收藏, 编辑
摘要: 一、简介1、当客户提交一个请求时,请求沿着链传递直到有一个管理者对象处理它。2、UML3、所属类别:行为型二、程序 1 // 职责链模式.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include 6 #include 7... 阅读全文

命令模式

2015-01-28 21:35 by itwolf, 202 阅读, 收藏, 编辑
摘要: 一、简介1、命令模式将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。2、命令模式中的几个角色客户(Client):创建了一个具体命令(ConcreteCommand)对象并确定其接收者。命令(Command):声明了一个给所有具体命... 阅读全文

桥接模式

2015-01-27 14:54 by itwolf, 359 阅读, 收藏, 编辑
摘要: 一、概述1、桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。2、在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,桥接模式把这种多维度分离出来,让他们独立变化,减少之间的耦合。感觉桥接模式的结构有点像抽象工厂模式,但桥接模式属于结构型模式,而抽象工厂模式属于创建型模式。... 阅读全文

单例模式

2015-01-27 11:01 by itwolf, 225 阅读, 收藏, 编辑
摘要: 一、简介1、单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。2、C++设计一个单例模式的方法如下: (1)构造函数声明为私有; 这样就保证了不能随意构造一个对象。(2) 将拷贝构造函数与等号运算符声明为私有,并不提供他们的实现; 即禁止对象被拷贝。(3) 在类中声明一个静态的全局访问接... 阅读全文

迭代器模式

2015-01-27 09:34 by itwolf, 209 阅读, 收藏, 编辑
摘要: 一、简介1、迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。2、类成员(1)Iterator(迭代器)迭代器定义访问和遍历元素的接口(2)ConcreteIterator (具体迭代器)具体迭代器实现迭代器接口对该聚合遍历时跟踪当前位置(3)Aggregate (... 阅读全文

组合模式

2015-01-26 10:08 by itwolf, 243 阅读, 收藏, 编辑
摘要: 一、简介1、组合模式将对象组合成树形结构以表示‘部分和整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。2、模式中的几个重要的类Component:组合中的对象声明接口,在适当情况下,实现所有类共有接口的行为。Leaf:叶节点对象,叶节点没有子节点。由于叶节点不能增加分支和树叶... 阅读全文

备忘录模式

2015-01-21 14:54 by itwolf, 175 阅读, 收藏, 编辑
摘要: 一、简介1、备忘录 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。2、模式成员(1)Originator(发起人):负责创建一个Memento(备忘录),用以记录当前的状态,并且可以使用备忘录恢复自己的状态。(2)Mement... 阅读全文

适配器模式

2015-01-21 10:07 by itwolf, 173 阅读, 收藏, 编辑
摘要: 一、简介1、适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2、在软件设计的初期要尽量将接口统一,及早发现不统一的接口进行重构,在双方都不太容易修改的时候再使用适配器模式进行适配。3、UML4、所属类别:结构型二、C+... 阅读全文

观察者模式

2015-01-20 21:32 by itwolf, 353 阅读, 收藏, 编辑
摘要: 一、简介1、观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化的时候,会通知所有观察者对象,使它们能够动态的更新自己。如:图形界面的工具箱中,表格对象和柱状图对象使用不同的形式描述同一应用数据对象的信息。表格对象和柱状图对象相互并不知道对方的存在,... 阅读全文

状态模式

2015-01-20 10:38 by itwolf, 275 阅读, 收藏, 编辑
摘要: 一、简介1、状态模式中当一个对象的内部状态改变时允许改变其行为,这个对象看起来像是改变了其类。2、状态模式可以消化较大的分支,将每个分支放入一种状态中,减少了分支之间的耦合程度,又符合开闭原则。当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式。3、U... 阅读全文

建造者模式

2015-01-19 14:42 by itwolf, 227 阅读, 收藏, 编辑
摘要: 一、简介:1、建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2、建造者模式通常包括下面几个角色:(1)builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。(2)ConcreteBuilder:继承builder类,针对不同的商业逻辑,具体... 阅读全文

外观模式

2015-01-19 09:10 by itwolf, 183 阅读, 收藏, 编辑
摘要: 一、简介1、外观模式为子系统中的一组接口提供一个统一的高层接口,这一接口使得子系统更加容易使用。2、举例 :房间里有3盏灯,每一盏灯都有一个开关控制它的开和关两种状态,由于它们经常一起开关,所以就设置一个总的开关,一下子同时控制所有的灯。3、UML图4、所属类别:结构型二、C++程序 1 // 外观... 阅读全文

模板方法模式

2015-01-18 10:54 by itwolf, 182 阅读, 收藏, 编辑
摘要: 一、简介1、模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2、说白了模板方法模式就是将一些通用的步骤放在基类中,而将不同的环节放在子类中,以减少代码的重用。3、举例:考试中抄写题目并做答案,老师抄的题目对于每位... 阅读全文

原型模式

2015-01-17 11:45 by itwolf, 202 阅读, 收藏, 编辑
摘要: 一、简介1、原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2、为什么会用到原型模式?(1)既然可以直接new,为什么会用到原型模式?这个可以从两个角度来说,第一,时间消耗角度:如果创建实例的构造函数非常的复杂,在执行这个构造函数时会消耗较长的时间,这时如果需要一个跟刚刚实... 阅读全文

抽象工厂模式

2015-01-16 11:13 by itwolf, 184 阅读, 收藏, 编辑
摘要: 一、相关介绍1、抽象工厂模式提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。2、UML图3、所属类别:创建型二、C++程序 1 // 抽象工厂模式.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #includ... 阅读全文

工厂方法模式

2015-01-16 10:41 by itwolf, 218 阅读, 收藏, 编辑
摘要: 一、相关介绍1、工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。2、UML图3、所属类别:创建型二、C++代码// 工厂方法模式.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing na... 阅读全文
点击右上角即可分享
微信分享提示