摘要: 意图:用原型示例指定创建对象的种类,通过拷贝这些原型创建新的对象适用性:当实例化的类是在运行时指定时为了避免创建一个与产品类平行的工厂类当一个类的示例只能有几个不同状态组合中的一种时示例图:示例代码:#pragma once//孙悟空一变二二变四…class CMonkeyKing{public: CMonkeyKing(int i);public: ~CMonkeyKing(void); public: void Display() { if(m_i==0) { _tprintf(_T("Stone monkey/n")); } if(m_i ==1) { _tprint 阅读全文
posted @ 2011-05-14 11:27 Yarkin 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 意图:定义一个用于创建对象的接口,让子类决定实例化哪个类适用性:当一个类不知道它所必须创建的类的对象时当一个类希望由它的子类来制定它所创建的对象的时候当类将创建对象的职责委托给多个帮助子类的一个是,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候示例图:示例代码: //工厂根据产品id生产产品class CFactory{public: CFactory(void);public: ~CFactory(void); public: static CProduct* Create(int id) { if(id ==0) { return new CPen(); } }};//通过模板方. 阅读全文
posted @ 2011-05-14 11:02 Yarkin 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 意图:讲一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作.通过将请求本身变成一个对象来使工具箱对象可向未指定的应用对象提出请求适用性:抽象出待执行的动作以参数化某对象,可以通过回调函数表达这种参数化支持取消操作(UnExecute)示例图:示例代码:#pragma once#include "Move.h"//command基类提供Execute接口class CBaseCommand{public: CBaseCommand(void);public: ~CBaseCommand(void); virtual 阅读全文
posted @ 2011-05-14 10:34 Yarkin 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到一个对象处理它为止.适用性:有多个对象可以处理一个请求,那个对象处理该请求运行时自动确定你想在不明确制定接受者的情况下,向多个对象中的一个提交一个请求可处理一个请求的对象集合应被动态指定示例图:示例代码:class CHandler{public: CHandler(CHandler* nextHandler);public: ~CHandler(void); public: void HandleRequest(CRequest req) { if(IsMatch(r 阅读全文
posted @ 2011-05-14 09:52 Yarkin 阅读(250) 评论(0) 推荐(0) 编辑