设计模式实践
文章平均质量分 81
houpei8404
这个作者很懒,什么都没留下…
展开
-
simple factory(简单工厂)
简单工厂,不是一种模式 head first design pattern第四章 简单工厂的 C++实现。 //////////////////////////////////////////////////////// Pizza.h #ifndef DEF_PIZZA_H_ #define DEF_PIZZA_H_ typedef enum { kChees原创 2012-03-12 20:55:15 · 243 阅读 · 0 评论 -
一、 享元(Flyweight)模式
一、 享元(Flyweight)模式 作用: 运用共享技术有效地支持大量细粒度的对象。 UML结构图: 解析: Flyweight模式在大量使用一些可以被共享的对象的时候经常使用.比如,在QQ聊天的时候很多时候你懒得回复又不得不回复的时候,一般会用一些客套的话语敷衍别人,如"呵呵","好的"等等之类的,这些简单的答复其实每个人都是提前定义好的,在使用的时候才调用出来.Fl原创 2012-05-11 10:49:30 · 383 阅读 · 0 评论 -
门面(Facade)模式
一、 门面(Facade)模式 @【Facade模式】 Facade模式-门面模式的作用是 (1)为复杂的系统提供一个简单的接口 (2)将子系统和调用者或称客户相分离 (3)层次化的结构,减少层之间的依赖。 【图解】以病人去门诊治疗子系统(只简单的列出一个子系统)为例: #ifndef FACADE_WAITER_H_ #def转载 2012-05-14 16:57:23 · 253 阅读 · 0 评论 -
一、 桥梁(Bridge)模式
作用: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 UML结构图: 抽象基类: 1)Abstraction:某个抽象类,它的实现方式由Implementor完成. 2)Implementor:实现类的抽象基类,定义了实现Abastraction的基本操作,而它的派生类实现这些接口. 接口函数: 1)Implementor::OperationImpl:定义原创 2012-05-15 16:41:21 · 355 阅读 · 0 评论 -
Chain of Responsibility Pattern
行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。 行为模式分为类的行为模式和对象的行为模式两种。 类的行为模式:类的行为模式使用继承关系在几个类之问分配行为。 对象的行为模式:对象的行为模式则使用对象的聚合来分配行为。 在后面将要介绍的行为模式包括以下几种: Chain of原创 2012-05-16 11:45:48 · 213 阅读 · 0 评论 -
命令(Command)模式
一、 命令(Command)模式 命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派原创 2012-05-18 12:10:21 · 285 阅读 · 0 评论 -
Visitor模式
作用: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. UML结构图: 解析: Visitor模式把对结点的访问封装成一个抽象基类,通过派生出不同的类生成新的访问方式.在实现的时候,在visitor抽象基类中声明了对所有不同结点进行访问的接口函数,如图中的VisitConcreateElementA函数等,这样也造成了原创 2012-05-22 14:54:27 · 303 阅读 · 0 评论 -
Observer模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. UML结构图: 解析: Observer模式定义的是一种一对多的关系,这里的一就是图中的Subject类,而多则是Obesrver类,当Subject类的状态发生变化的时候通知与之对应的Obesrver类们也去相应的更新状态,同时支持动态的添加和删除Observer对象的原创 2012-05-21 14:41:44 · 377 阅读 · 0 评论 -
Strategy(策略模式)
一、 策略(Strategy)模式 策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车(Shopping Cat)系统。一个最简单的情况就是把所有货品的单价乘上数量,但是实际情况肯定比这要复杂。比如,本网站可能对所有的教材类图书实行每本一原创 2012-05-24 11:55:58 · 334 阅读 · 0 评论 -
一、 代理(Proxy)模式
一、 代理(Proxy)模式 代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 作用: 为其他对象提供一种代理以控制对这个对象的访问。 UML结构图: 抽象基类: 1)Subject:定义了Proxy和RealSubject的公有接口,这样就可以在任何需要使用到RealSubject的地方都使用Proxy. 解析: Proxy其原创 2012-05-10 11:54:40 · 302 阅读 · 0 评论 -
Decorator模式
装饰(Decorator)模式又名包装(Wrapper)模式[GOF95]。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 在装饰模式中的各个角色有: 抽象构件(Component)角原创 2012-05-10 11:50:17 · 340 阅读 · 0 评论 -
工厂方法模式(factory method)
工厂方法模式定义: 定义了一个创建对象的接口, 但由子类决定实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 ///////////////////////////////////////////////////////////////////////////////////////PizzaStore.h #ifndef DEF_PIZZA_STORE_原创 2012-03-13 19:19:47 · 227 阅读 · 0 评论 -
单例(Singleton)模式
一、 单例(Singleton)模式 单例模式的特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其它对象提供这一实例。 //文件 Singleton.h #include "stdafx.h" #ifndef _DEF_SINGLETON_H_ #define _DEF_SINGLETON_H_ /* 1,单例类: 只能有一个实原创 2012-03-12 18:58:16 · 236 阅读 · 0 评论 -
抽象工厂(Abstract Factory)模式
抽象工厂(Abstract Factory)模式 //Factory.h #ifndef DEF_FACTORY_H_ #define DEF_FACTORY_H_ ///////////////////////////////////////////////////////////////////////// /* 抽象工厂(Abstract Factory)角色:担任这原创 2012-03-12 19:00:30 · 235 阅读 · 0 评论 -
构建者模式(Builder)
以下情况应当使用建造者模式: 1、 需要生成的产品对象有复杂的内部结构(BuildPartA和BuildPartB)。 2、 需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序(先BuildPartA和BuildPartB)。 使用建造者模式主要有以下效果: 1、 建造模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。 2、 每一原创 2012-05-07 13:16:06 · 346 阅读 · 0 评论 -
适配器模式(Adapter)
结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类的实例。根据这一点,结构模式可以分为类的结构模式和对象的结构模式。 结构模式包括以下几种: 适配器模式(Adapter): 合成模式(Composite): 装饰模式(Decorator): 代理模式(Proxy): 享元模式(Flyweight)原创 2012-05-08 11:54:50 · 243 阅读 · 0 评论 -
原型(Prototype)模式
二、 Prototype模式的结构: 客户(Client)角色:客户类提出创建对象的请求。 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个C#接口或抽象类实现。此角色给出所有的具体原型类所需的接口。在C#中,抽象原型角色通常实现了ICloneable接口。 具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象原型角色所要求的接口。原创 2012-05-07 16:50:03 · 230 阅读 · 0 评论 -
合成(Composite)模式
一、 合成(Composite)模式 合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 二、 合成模式概述 下图所示的类图省略了各个角色的细节。 可以看出,上面的类图结构涉及到三个角色: 抽象构件(Component)角色:这是一个抽象角色,原创 2012-05-08 16:49:37 · 792 阅读 · 0 评论 -
TemplateMethod模式
作用: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML结构图: 抽象基类: 1)AbstractClass:抽象基类,定义算法的轮廓 解析: TemplateMethod 的关键在于在基类中定义了一个算法的轮廓,但是算法每一步具体的实现留给了派生类.但是这样也会原创 2012-05-24 11:32:16 · 246 阅读 · 0 评论