代码改变世界

随笔分类 -  C++设计模式

C++设计模式-Adapter

2012-04-01 19:49 by htc开发, 230 阅读, 收藏,
摘要: 定义适配器将一个类的接口转换成客户希望的另外一个接口,该模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。结构类适配器包含两种结构: 1.使用多重继承对一个接口与另一个接口进行匹配:如下图所示。 2.依赖于对象组合,如下图所示。理解 在这么几种情况下可以使用类适配器模式: 1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以服用的类,该类可以与其他不相关的类(那些接口可能不一定兼容的类)或不可预见的类协同工作。 3.你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。(仅使用于对象适配器)应用 1.E 阅读全文

UML基础知识

2011-10-12 10:28 by htc开发, 238 阅读, 收藏,
摘要: UML基础知识UML简介在80年代末至90年代中,对面向对象分析与设计方法的研究发展到一个高潮。但是,诸多流派在思想和术语上有很多不同的提法,在术语、概念上的运用也各不相同,需要一种统一的符号来描述面向对象的分析和设计活动。UML应运而生。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且有进一步的发展,最终成为大众所共同接受的标准建模语言。统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。UML适用于各种软件开发方法 阅读全文

C++设计模式-原型

2011-08-03 20:05 by htc开发, 196 阅读, 收藏,
摘要: 定义用原型(Prototype)实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。结构理解1. Prototype是原型基类,提供Clone纯虚方法,它根据不同的派生类来克隆不同的对象。2. ConcretePrototype是原型具体类。实现Clone方法,克隆自己,返回克隆后的新对象。3. Client调用基类Clone接口,就可以得到一个克隆对象。要点1. 原型模式中,Client并不知道要克隆对象的实际类型,只需知道基类类型即可。2. 克隆对象比直接创建对象的优点在于,克隆是将原有对象的行为属性带到了新的对象中。3. C++没有克隆方法,要克隆一个对象,需要借助拷贝构造函数(C 阅读全文

C++设计模式-生成器

2011-08-03 14:38 by htc开发, 350 阅读, 收藏,
摘要: 定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。结构理解1. 生成器(Builder)模式是一步步构建一个复杂的产品,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。2. Builder基类创建复杂产品(Product)全过程的抽象基类。Builder基类提供若干个构造部件(BuildPart)的方法(基类提供缺省实现)。具体构建产品的过程由ConcreteBuilder实现,GetResult()是获取构造完成后的对象(该方法并不在基类中!因为产品Product一般没有抽象基类。如果产品有抽象基类,GetResult就可 阅读全文

C++设计模式-抽象工厂

2011-08-02 21:03 by htc开发, 176 阅读, 收藏,
摘要: 定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。结构理解1.AbstractFactory是抽象工厂类,声明创建产品族的接口。具体工厂创建具体的产品族(Product Family),可以创建出分属于不同产品等级的一个产品族中的所有对象。ConcreteFactory1和ConcreteFactory2分别生产2个不同产品族。举例:手机工厂生产的产品族中,产品有Linux系统的手机和Windows系统的手机。PC工厂生产的产品族中,产品有Linux系统的PC和Windows系统的PC。2.AbstractProductA和AbstractProductB是产品基类。它们 阅读全文

C++设计模式-单件

2011-08-02 19:38 by htc开发, 227 阅读, 收藏,
摘要: 定义单件(Singleton)模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构理解1.Singleton模式用来取代全局静态变量。C++通过静态成员变量来实现类实例全局唯一性。2.instance()方法是单件提供的唯一调用入口。要点1.为了防止外界调用产生多个实例,将构造方法、析构方法、拷贝构造方法、赋值重载方法都作为protected。2.instance()方法产生对象方式有两种:使用局部static对象,生命期在首次进入局部生命期产生,在程序结束时销毁;通过new产生新对象,在析构方法中delete对象。3.获取单件实例调用方式:Singleton::instance() 阅读全文

C++设计模式-工厂方法

2011-08-02 16:55 by htc开发, 169 阅读, 收藏,
摘要: 定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法(Factory Method)使一个类的实例化延迟到其子类。也叫虚构造器(Virtual Constructor)结构理解1.Product是工厂方法生产产品的抽象基类。2.Creator是生产产品的工厂对象抽象基类。Creator提供创建虚方法即工厂方法FactoryMeothod()。FactoryMeothod()由派生类(ConcreteCreator)具体实现,生产对应的具体产品(ConcreteProduct)。3.ConcreteProduct是继承Product的具体产品。4.ConcreteCreator是生 阅读全文