Archive for 11 10 月, 2010

设计模式学习——Abstract Factory(抽象工厂)

星期一, 11 10 月, 2010

意图:需要为特定的客户(或情况)提供对象组。

问题:需要实例化一组相关的对象。

解决方法:协调对象组的创建。提供一种方式,将如何执行对象实例化的规则从使用这些对象的客户对象提取出来。

参与者与协作者:AbstractFactory为如何创建对象组的每个成员定义接口。一般每个组都由独立的ConcreteFactory进行创建。

效果:这个模式将“使用哪些对象”的规则与“如何使用这些对象”的逻辑分离开来。

实现:定义一个抽象类来指定创建哪些对象。然后为每个组实现一个具体类。可以用表或文件完成同样的任务。

(更多…)

设计模式学习——Bridge(桥接)

星期一, 11 10 月, 2010

意图:将一组实现与另一组使用它们的对象分离。

问题:一个抽象类的派生类必须使用多个实现,但不能出现类数量爆炸性增长。

解决方案:为所有实现定义一个接口,供抽象类的所有派生类使用。

参与者与协作者:Abstraction为要实现的对象定义接口,Implementor为具体的实现类定义接口。Abstraction的派生类使用Implementor的派生类,却无需知道自己具体使用哪一个ConcreteImplementor。

效果:实现与使用的对象解耦,提供了可扩展性,客户对象无需操心实现问题。

实现:
1. 将实现封装在一个抽象类中。
2. 在要实现的抽象的基类中包含一个实现的句柄。

(更多…)