Prototype模式C++实现
摘要:作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。UML结构图:抽象基类:1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数接口函数:1)Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象.解析:Prototype模式其实就是常说的"虚拟构造函数"一个实现,C++的实现机制中并没有支持这个特性,但是通过不同派生类实现的Clone接口函数可以完成与"虚拟构造函数"同样的效果.举一个例子来解释这个模式的作用,假设有一家店铺是配钥匙的,他对外提供配制钥匙的服务(提供Clone接口函数),你需要配什么钥匙它不知道只是提供这种服务,
阅读全文
posted @
2011-01-10 00:53
maxweii
阅读(1203)
推荐(0)
State模式C++实现
摘要:作用:允许一个对象在其内部状态改变时改变它的行为.UML结构图:解析:State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对原来的代码进行编译.State模式采用了对这些不同的状态进行封装的方式处理这类问题,当状态改变的时候进行处理然后再切换到另一种状态,也就是说把状态的切换责任交给了具体的状态类去负责.同时,State模式和Strategy模式在图示上有很多相似的地方,需要说明的是两者的思想都是一致的,只不过封装的东西不同:Stat
阅读全文
posted @
2011-01-10 00:47
maxweii
阅读(392)
推荐(0)
Builder模式C++实现
摘要:作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML结构图:适用于以下情况:1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2)当构造过程必须允许被构造的对象有不同的表示时。抽象基类:1)Builder:这个基类是全部创建对象过程的抽象,提供构建不同组成部分的接口函数接口:1)Builder::BuildPartA,Builder::BuildPartB:是对一个对象不同部分的构建函数接口,Builder的派生类来具体实现.另外还有一个需要注意的函数,就是Director::Construct函数,这个函数里面通过调用上面的两个接口函数
阅读全文
posted @
2011-01-09 22:47
maxweii
阅读(862)
推荐(0)
Command模式C++实现
摘要:作用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.UML结构图:解析:Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用.其实,如果弄清楚了Command模式的原理,就会发现其实它和注册回调函数的原理是很相似的,而在面向过程的设计中的回调函数其实和这里的Command类的作用是一致的.采用Command模式解耦了命令的发出者和命令的执行者.实现:1)Command.h/**//****
阅读全文
posted @
2011-01-09 22:02
maxweii
阅读(975)
推荐(0)
Iterator模式C++实现
摘要:作用:提供一种方法顺序访问一个聚合对象中各个元素,,而又不需暴露该对象的内部表示.UML结构图:解析:Iterator几乎是大部分人在初学C++的时候就无意之中接触到的第一种设计模式,因为在STL之中,所有的容器类都有与之相关的迭代器.以前初学STL的时候,时常在看到讲述迭代器作用的时候是这么说的:提供一种方式,使得算法和容器可以独立的变化,而且在访问容器对象的时候不必暴露容器的内部细节,具体是怎么做到这一点的呢?在STL的实现中,所有的迭代器(Iterator)都必须遵照一套规范,这套规范里面定义了几种类型的名称,比如对象的名称,指向对象的指针的名称,指向对象的引用的名称....等等,当新生
阅读全文
posted @
2011-01-09 21:46
maxweii
阅读(5786)
推荐(1)
Adapt模式C++实现
摘要:作用:将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。UML示意图1)采用继承原有接口类的方式2)采用组合原有接口类的方式解析:Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能.实现:Adapt模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法.1)Adapt.h/**//************************************************************
阅读全文
posted @
2011-01-09 21:36
maxweii
阅读(854)
推荐(0)
Strategy模式C++实现
摘要:作用:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.UML结构图:实现:1)Strategy.h/**//********************************************************************created:2006/08/06filename:Strategy.hauthor:李创http://www.cppblog.com/converse/purpose:Strategy模式的演示代码************************************************
阅读全文
posted @
2011-01-09 21:11
maxweii
阅读(419)
推荐(0)
Observer模式的c++实现
摘要:作用: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 UML结构图: 解析: Observer模式定义的是一种一对多的关系,这里的一就是图中的Subject类,而多则是Obesrver类,当Subject类的状态发生变化的时候通知与之对应的Obesrver类们也去相应的更新状态,同时支持动态的添加和删除Observer对象的功能。Obesrver模式的实现要点是,第一:一般subject类都是采用链表等容器来存放Observer对象,第二:抽取出Observer对象的一些公共的属性形成Observer基类,而Subject中保存的则
阅读全文
posted @
2010-12-28 19:41
maxweii
阅读(355)
推荐(0)
UML类图关系大全
摘要:•UML中的关系(Relationships)主要包括4种:关联关系、依赖关系、泛化关系和实现关系。 关联关系(Association)•关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。•在UML图中,关联关系用一条实线表示。 依赖关系(Dependency) •对于两个对象X、Y,如果对象X发生变化,可能会引起对另一个对象Y的变化,则称Y依赖于X。•在UML图中,依赖关系用一条带有箭头的虚线来表示。 泛化关系(Generalization)•UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与和C++及Ja
阅读全文
posted @
2010-12-28 10:45
maxweii
阅读(370)
推荐(0)
23种经典设计模式概览
摘要:创建型模式:Abstract Factory(抽象工厂):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 Builder(生成器):将一个复杂对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表述。Factory Method(工厂方法):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。Prototype(原型):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。Singleton (单例):保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构型模式: Adapter(适配器)
阅读全文
posted @
2010-02-04 10:00
maxweii
阅读(909)
推荐(0)