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、适用性
想表示对象的“部分 - 整体”的层次...
设计模式, 软件开发阅读全文
2012-07-19 19:31
⁄ 工业·编程
⁄ 共 903字
1、意图
用原型实例指定创建对象的种类,并且通过“拷贝这些原型”创建新的对象。
2、问题
当一个系统应该独立于它的产品创建、构成和表示时;
当要实例化的类是在运行时指定时(如动态装载);
为了避免创建一个与产品类层次平行的工厂类层次时;
当一个类的实例只能有几个不同状态组合中的一种时。
3、解决方案
创建产品时,根据原型参数,克隆一个新产品。
4、通用结构
5、参与者
Prototype:声明一个克隆自身的接...
设计模式, 软件开发阅读全文
2012-07-19 19:30
⁄ 工业·编程
⁄ 共 689字
1、意图
将一个复杂对象的构建与它的表示分离开,使得同样的构建过程可以创建不同的表示。
2、问题
创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式。
构造过程必须允许被构造的对象有不同的表示。
3、解决方案
将复杂对象的构造方法独立出来。
4、通用结构
5、参与者
builder:为创建一个Product的各个部件指定抽象接口。
ConcreteBuilder:实现Builder的各个接口以构造和装配该产品的的各个部件;...
设计模式, 软件开发阅读全文
2012-07-19 19:30
⁄ 工业·编程
⁄ 共 569字
1、意图
定义一个创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟到子类。
2、问题
一个类需要实例化另一个类的派生类。但不知道是哪一个。Factory Method允许派生类进行决策。
3、解决方案
派生类对实例化哪个类和如何实例化做出决策。
4、通用结构
5、参与者
Product:定义将被工厂方法创建的对象的接口
ConcreteProduct:实现Product接口
Creator:声明工厂方法,该方法返回一个...
设计模式, 软件开发阅读全文
2012-07-19 19:29
⁄ 工业·编程
⁄ 共 643字
1、意图
在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限制时,管理对象的重用。
2、问题
对象的创建和/或管理必须遵循一组定义明确的规则集。通常这些规则都与如何创建对象、能够创建多少个对象和在已有对象完成当前任务时如何重用它们等等相关。
3、通用结构
4、解决方案
在需要一个Reusable对象时,Client调用ReusablePool的AcquireReusable方法。如果池是空的,那么AcquireReusable方法创建一个Reusable对...
设计模式, 软件开发阅读全文
2012-07-19 19:27
⁄ 工业·编程
⁄ 共 1424字
1、 意图
多线程中,创建线程安全的单件模式。
2、 问题
多线程中,Singleton模式并不总是正常工作的。
3、 解决方案
在检查到null或实例未创建之后进行“同步”,然后再检查一次,确保实例尚未创建
4、 效果
Singleton模式的变体,优化掉不必要的锁定,这种同步检查最多进行一次,因此不会成为瓶颈。
5、 实现
// .Net中通过MemoryBarrier 实现 public class MySingleton { private static ...
设计模式, 软件开发阅读全文
2012-07-19 19:25
⁄ 工业·编程
⁄ 共 506字
1、意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2、工作原理
用一个特殊方法来实例化所需的对象。其中最关键的就是这个方法:调用这个方法时,检查对象是否已经实例化。如果已经实例化,该方法仅返回对该对象的一个引用。如果尚未实例化,该方法实例化该对象并返回对此新实例的一个引用。为了确保这是实例化此类型对象的唯一方法,将这个这个类的构造函数定义为保护或者私有的。
3、问题
几个不同的客户对...
设计模式, 软件开发阅读全文