l         适用性

n         类的抽象以及他的实现都应该可以通过生成子类的方法加以扩充。

n         如果任何一种扩展都会导致类以几何级数来增长,这就说明你需要将一个对象分解为两个部分,这种类层次称为“嵌套的普化 nested generalizations”;

l         一般来讲,Implementor只提供一些基本操作,而Abastraction则定义了一些基于这些基本操作的较高层次的操作。

l         Bridge Pattern的优点:

n         是的接口与实现分离,一个抽象类的实现可以在运行时刻进行配置,一个对象甚至可以在运行时刻改变他的实现。

n         提高括扩充性:你可以单独对AbstractionImplementor的类层次进行扩充。

n         实现细节对客户透明,你可以完全对客户隐藏细节。在c++中,implementor类的类接口可以在一个似有的头文件中定义,这个文件不提供给客户,这样你就可以对客户彻底的隐藏了一个类的实现部分。

l         实现

n         有一种特殊的情况是只有一个Implementor类,这是bridge的一种退化。

n         Abstraction有三种方法来创建implementor

u       Abstraction知道所有的concreteImplementor所以就在自己的构造器中创建implementor

u       Abstraction创建一个默认的implementor,然后根据需要改变这个实现;

u       引入factory这样Abstraction就不需要知道任何具体的implementor。我推荐使用这样的方法。

 

 

1 桥接模式的典型结构

关于p106中提到的Set, LinkedSet, HashSetLinkedList, HashTable的关系,书中说是一种退化的桥接,我也可以说这是一种Adapter,我们可以来看两者的类结果对比,见图2和图3。通过对比,我们可以发现,p106的应用只是子类的实现多一些,相当于有多个Adapter

作者这么说也是队的,BridgeAdapter本身就是相似的。

 

2 适配器模式的典型结构

 

 

 

posted on 2008-11-18 16:07  AlexusLi  阅读(315)  评论(6编辑  收藏  举报