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