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中提到的应用

  • 相关阅读:
    选择排序--简单(c语言)
    冒泡排序--简单(c++)
    冒泡排序--简单(c语言)
    直接插入排序--简单(c++)
    Microsoft Azure File 服务简介
    【 D3.js 选择集与数据详解 — 1 】 使用datum()绑定数据
    物联网操作系统HelloX V1.77(beta)版本发布
    对XX证券报关于物联网操作系统的几个问题的答复
    使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure
    使用 Azure Site Recovery 灾难恢复至 Azure 的功能现已正式发布
  • 原文地址:https://www.cnblogs.com/strinkbug/p/1330288.html
Copyright © 2011-2022 走看看