2012-08-21 05:52
⁄ 工业·编程
⁄ 共 1950字
说明:将《Head First 设计模式》装饰者模式,用C++实现。
咖啡及调料类Behaverage.h:
#pragma once #include <iostream> using namespace std;
//咖啡类 class IBehaverage { public: virtual ~IBehaverage(){}
virtual CString GetDescription() { return m_strDesc; ...
设计模式阅读全文
2012-08-21 05:51
⁄ 工业·编程
⁄ 共 2462字
说明:将《Head First设计模式》中策略模式,用C++来实现。
飞翔行为FlyBehavior.h:
#pragma once #include <iostream> using namespace std;
class IFlyBehavior { public: virtual ~IFlyBehavior(){}
virtual void Fly() = 0; };
class CFlyWithWings : public IFlyBehavior { public: void Fly() { ...
设计模式阅读全文
2012-08-21 05:51
⁄ 工业·编程
⁄ 共 1256字
原型模型,画图软件,拖拽图形的例子做比很贴切。
图形类Graph.h:
#pragma once #include <iostream> using namespace std;
class CGraph { public: CGraph() : m_strColor(_T("Red")) {
}
virtual ~CGraph(){}
virtual CGraph* Clone() = 0...
设计模式阅读全文
2012-08-18 11:24
⁄ 工业·编程
⁄ 共 2385字
在使用Façade模式之前,我们先来看一下什么是Façade模式(中文名:门面模式、外观模式)。
Façade模式的框架结构
我们先举一个现实中的例子:新生报道。我们都有过去学校作为新生报道的经历,我们先接到通知,然后坐火车/汽车/自行车,到大学校门口,找新生报道的地点,交上资料,在新生接待处登记,然后去交费处领取交费表单,填写后交费,拿着交费单据去核实处盖章,拿着这些收据返回...
设计模式阅读全文
2012-08-18 11:20
⁄ 工业·编程
⁄ 共 875字
1、沉重的网络负担
在没有SessionBean的时候,客户端直接同底层的EntityBean进行交互,形成的是一种具有紧密耦合的硬编码机制,对于远程的客户来说,还附加了沉重的网络交互负担,具体的交互图如下:
在上面的图中,我们假设客户是通过网络对EntityBean的访问,如果EntityBean中有4个字段ABCD,客户要进行字段ABCD的值的设置,就要进行4次网络的传输,我们知道,一个客户要远程与EntityBean交互,就要经过如下的操作:
这样一来...
设计模式阅读全文
2012-07-19 19:38
⁄ 工业·编程
⁄ 共 1484字
1、意图
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录日志;以及支持可撤销的操作。
2、动机
有时必须向某对象提交请求,但并不知道关于被请求的操作(或请求的接受者)的任何信息。
提交一个请求的对象仅需要知道如何提交它,而不需知道该请求将会被如何执行。
3、适用性
COMMAND模式是回调机制的一个面向对象的替代品。
在不同的时刻指定、排列和执行请求。如果一个请求的接收者...
设计模式, 软件开发阅读全文
2012-07-19 19:35
⁄ 工业·编程
⁄ 共 1180字
1、意图
使多个对象都有机会处理请求,从而避免请求的发送者和接收者间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2、动机
给多个对象“处理一个请求”的机会,从而解耦发送者和接收者。该请求沿对象链传递,直啊到有一个对象处理它。从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给下一个候选者。请求发送者并不明确地知道哪一个对象将会处理它。
3、适用性
...
设计模式, 软件开发阅读全文
2012-07-19 19:34
⁄ 工业·编程
⁄ 共 1606字
1、意图
为其他对象提供一种代理以控制对这个对象的访问
2、动机
为了只有在确实需要这个对象时才对它进行创建和初始化。提高程序响应速度。
3、适用性
远程代理(Remote Proxy) 为一个对象在不同的地址空间提供局部代表。
虚代理(Virtual Proxy)为开销很大的对象创建代理,使之可以按需创建。
保护代理(Protection Proxy) 控制对原始对象的访问。用于对象应该有不同的访问权限的时候。
智能指引(Smart Referen...
设计模式, 软件开发阅读全文
2012-07-19 19:33
⁄ 工业·编程
⁄ 共 1355字
1、意图
运用共享技术有效地支持大量细粒度的对象
2、动机
Flyweight模式描述了如何共享对象,使得可以细粒度地使用它们而无需高昂的代价。
3、适用性
Flyweight模式的有效性很大程度上取决于如何使用它以及在何处使用它。
一个应用程序使用了大量的对象;
完全由于使用了大量的对象,造成很大的存储开销;
对象的大多数状态都可变为外部状态;
如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组的对...
设计模式, 软件开发阅读全文
2012-07-19 19:32
⁄ 工业·编程
⁄ 共 2317字
1、意图
将对象组合成树形结构以表示“部分 - 整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。
2、动机
在图形应用程序中,用户可以使用简单的图元组件组合成较大的组件,这些组件又可以组合成更加复杂的组件。Composite描述了如何使用递归组合,使得用户不必对这些类进行区别。它的关键是一个抽象类,既可以代表简单的图元,又可以代表图元的组合。
3、适用性
想表示对象的“部分 - 整体”的层次...
设计模式, 软件开发阅读全文