
设计模式
vincent-xia
这个作者很懒,什么都没留下…
展开
-
设计模式之二十四:访问者模式(Visitor)
访问者模式: 定义了一个作用于一个类的一些操作,访问者模式允许在不改变类的前提下增加一些操作。 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of原创 2015-07-01 15:13:01 · 1062 阅读 · 1 评论 -
设计模式之二十三:解释器模式
解释器模式: 给定一个语言,定义了它的文法的一种表示,并定义了一个解释器,这个解释器使用该表示来解释语言中的句子。 Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in th原创 2015-06-30 16:28:46 · 915 阅读 · 0 评论 -
设计模式之二十二:享元模式(FlyWeight)
享元模式: 使用共享技术有效地支持大量细粒度的对象。 Use sharing to support large numbers of fine-grained objects efficiently. 这个设计模式和它的名字一样核心是为了共享代码。UML图: 主要包括:FlyWeight:声明了一个接口,通过这个接口所有的FlyWeight能够接受并作用于外部的状态。ConcreteFl原创 2015-06-30 10:37:44 · 1148 阅读 · 0 评论 -
设计模式之二十一:中介者模式(Mediator)
中介者模式:定义了一个对象,用来封装一系列对象的交互。中介者模式通过使对象之间不必显式引用降低了对象之间的耦合,并且允许你独立改变它们之间的交互。中介者模式就是将对象之间的交互封装在了一个独立的对象中,这个独立的对象用来控制对象之间的交互行为,所以这个对象还是蛮复杂的。UML类图: 主要包括:Mediator:定义了一个Colleague对象之间交互的接口。ConcreteMediator:实原创 2015-06-28 13:25:36 · 1341 阅读 · 0 评论 -
设计模式之二十:责任链模式(Chain of Responsibility)
感觉这个设计模式和组合模式一样是一种很巧妙的设计模式,在需要使用它的地方如果不使用这种设计模式代码会变的很复杂,但是这种设计模式的基本原理又是很简单的。责任链模式: 通过使多个对象都有机会来处理请求的方式避免了请求的发送者和接收者之间的耦合。将接收者组织成链式的结构这样可以将请求沿着这条链进行传递,直到有接收者对它进行处理。UML类图: 主要包括:Handler:定义了一个处理请求的接口,实现原创 2015-06-27 16:06:57 · 988 阅读 · 0 评论 -
设计模式之十九:命令模式(Command)
命令模式:将一个请求封装成一个对象,从而允许用不同的请求参数化客户,对请求进行排序或记录日志,并且支持撤销操作。UML图: 主要包括:Command:声明了一个操作的接口ConcreteCommand:绑定了一个Receiver和一个行为,通过相关联的Receiver对象实现了了execute方法。Client:创建一个ConcreteCommand对象并且设置了它的Receiver。in原创 2015-06-27 15:02:39 · 950 阅读 · 0 评论 -
设计模式之十八:桥接模式(Bridge)
桥接模式: 将抽象部分和它的实现部分相分离开来,以使它们可以单独地变化。UML图: 主要包括:Abstraction:定义了抽象部分的接口,操作一个实现部分对象的引用。RefinedAbstraction:继承自抽象部分的类。Implementor:实现部分的接口。ConcreteImplementor:实现了Implementor定义的接口的具体类。C++代码如下:#include原创 2015-06-24 22:38:16 · 1006 阅读 · 0 评论 -
设计模式之十七:单例模式(Singleton)
单例模式:确保一个类只有一个实例化的对象并且提供了一个访问这个对象的方法。UML图:主要包括:Singleton(LoadBalancer):定义了一个操作唯一的对象的方法;负责创建和操作这个唯一的对象。C++中实现单例模式是通过静态成员变量和静态方法来实现。#include class Singleton{ public: /原创 2015-06-15 17:04:46 · 777 阅读 · 0 评论 -
设计模式之十六:迭代器模式(Iterator)
迭代器模式: 提供了一种在不暴漏对象底层细节的情况下顺序访问聚合对象的方法。 Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.其实这个设计模式用的很多,但是设计的很少。因为stl中的迭代器就是这个模式的应用原创 2015-06-09 21:04:52 · 918 阅读 · 0 评论 -
设计模式之十五:组合模式(Composite)
组合模式: 将对象组合成树形结构来表示部分与整体的关系。组合模式让客户能将单个对象和组合对象统一对待。 Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objec原创 2015-06-09 19:16:16 · 876 阅读 · 0 评论 -
设计模式之十四:备忘录模式(Memento)
备忘录模式: 在不破换封装性的前提下,捕获一个对象的内部状态并将这个状态保存到对象外部,这样这个对象之后可以恢复到保存的状态。 Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state la原创 2015-06-09 16:28:54 · 821 阅读 · 0 评论 -
设计模式之十三:适配器模式(Adapter)
适配器模式: 将一个类的接口转换成另外一个期望的类的接口。适配器允许接口互不兼容的类一起工作。Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompati原创 2015-06-07 12:41:10 · 921 阅读 · 0 评论 -
设计模式之十二:状态模式(State)
状态模式: 当一个对象的内部状态发生变化时允许改变它的行为。Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.状态模式将依赖于状态的行为分离成了各种状态类,每一种特定的转态类只处理单一的行为,并且定义了各种状态之间的转移变原创 2015-06-07 11:30:28 · 950 阅读 · 0 评论 -
设计模式之十一:抽象工厂模式(Abstract Factory)
抽象工厂模式: 提供了一个创建一系列相关的或相互依赖的对象的接口而不需要具体指定它们的类型。Provide an interface for creating families of related or dependent objects without specifying their concrete classes.UML类图:主要包括:AbstractFactory(Continent原创 2015-06-06 23:49:29 · 1133 阅读 · 0 评论 -
设计模式之十:观察者模式(Observer)
观察者模式: 在对象之间定义了一种一对多的依赖关系,当一个对象改变它的状态时,所有依赖它的对象会自动接收通知并更新自己的状态。Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated autom原创 2015-06-06 21:52:54 · 926 阅读 · 0 评论 -
设计模式之九:建造者模式(Builder)
建造者模式: 将一个复杂对象的建造过程和它的表示分离开来,这样相同的建造过程可以创建不同的表示。Separate the construction of a complex object from its representation so that the same construction process can create different representations.通俗一点就是如原创 2015-06-06 11:28:55 · 1053 阅读 · 0 评论 -
设计模式之八:外观模式(Facade)
外观模式: 为子系统中的一系列接口提供了一个统一的界面。外观模式定义了一个高层次的接口以使子系统更加容易使用。Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to us原创 2015-06-06 10:42:46 · 1018 阅读 · 0 评论 -
设计模式之七:模板方法模式(Template Method)
模板方法模式: 定义了一个算法的基本操作骨架,并将算法的一些步骤延迟到子类中来实现。模板方法模式让子类在不更改算法结构的前提下可以重新定义算法的一些步骤。Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses re原创 2015-06-05 23:33:50 · 1003 阅读 · 0 评论 -
设计模式之六:原型模式(Prototype)
原型模式:使用原型实例来指定创建对象的种类,并通过拷贝这个对象的值来创建新的对象。Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.UML图:主要包括Prototype:定义了一个包含克隆自身的接口Concret原创 2015-06-05 23:10:30 · 967 阅读 · 0 评论 -
设计模式之五:工厂方法模式(Factory Method)
工厂方法模式:定义了一个创建对象的接口,由子类来决定具体实例化那个对象。工厂方法模式让类的实例化转移到子类中来判断。 Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantia原创 2015-06-03 15:55:27 · 1098 阅读 · 0 评论 -
设计模式之四:代理模式(Proxy)
代理模式: 为某个类提供了一个代理来控制访问它。 Provide a surrogate or placeholder for another object to control access to it.UML图: 主要包括:Subject(IMath):姑且称之为抽象的主题角色吧,这个类为代理类(Proxy)和真实的主题角色(RealSubject)定义了一个统一的接口,这样代理类(Pr原创 2015-06-03 10:54:35 · 1006 阅读 · 0 评论 -
设计模式之三:装饰模式(Decorator)
装饰模式: 动态地给对象添加一些相关的职责。装饰模式相比与添加子类提供了一种更加灵活的方式。 UML图如下所示: 感觉上图中关键的有这几点:Decorator与Component的聚合关系(即Decorator中存在一个Component类型的引用),由于这个聚合关系的存在,Decorator可以通过一个Component的引用调用Component的接口Decorator与Compo原创 2015-06-02 23:38:20 · 1134 阅读 · 0 评论 -
设计模式之二:策略模式(Strategy)
策略模式(strategy)定义了一个算法家族,这个算法家族封装了一系列的算法,但是这些算法之间是相互可以替换的。策略模式让算法的变化和它们调用者的变化分离开来了。 UML图如下: 主要包括:Strategy:声明了一个对所有算法而言通用的接口类,下面的Contex类使用这个接口来调用一个一个具体的Stragety的算法。ConcreteStrategy:使用Strategy这个接口具体原创 2015-05-31 16:49:35 · 1094 阅读 · 1 评论 -
设计模式之一:简单工厂模式
这几天准备把设计模式好好看一下,顺带着做下笔记,设计模式以前零零散散看过一些,做项目时也用过或见到过一些设计模式,但是可能只是停留在见到那种设计模式时有点印象,有的时候也将名称弄混,希望这次系统学习的机会能让我对设计模式有个更加深刻的印象吧。 这次学习设计模式主要的参考资料有: 《大话设计模式》 http://www.dofactory.com/net/design-patterns 上面两原创 2015-05-31 14:56:29 · 1156 阅读 · 0 评论