zoukankan      html  css  js  c++  java
  • 关于Bridge模式

     

     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 适配器模式的典型结构

    3 p106中提到的应用

  • 相关阅读:
    Atitit.auto complete 自动完成控件的实现总结
    Atitit. .net c# web 跟客户端winform 的ui控件结构比较
    Atitit.实现继承的原理and方法java javascript .net c# php ...
    Atitit.javascript 实现类的方式原理大总结
    Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9
    Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结
    c#类库中使用Session
    Oracle和Redhat下载地址
    IIS (HTTP Error 500.21
    浅淡Windows7 32位与64位/x86与x64的区别
  • 原文地址:https://www.cnblogs.com/strinkbug/p/1330288.html
Copyright © 2011-2022 走看看