zoukankan      html  css  js  c++  java
  • Design Pattern: Bridge 模式

    Gof 的书中指到Bridge模式的目的:“将抽象部份与它的实现部份分离,使它们都可以独立地变化。”
    这句话写得简短,这边再作进一步的解释,抽象部份指的是行为方面定义,实现方面指的是与特定平台相依的代码实现。
    一个实际的例子在Gof书中有提到,假设您定义了一个IWindow介面,这个介面只定义一些抽象的绘图行为,而不涉及平台的实作,今天您可以继承这个类 来开发适用于X Window的XWindow类,也可以继承这个类来开发适用于Windows XP系统的WindowsXP类,为了善用系统资源,您在实作IWindow介面时,会将与系统相关的实现代码撰写在介面的实作中。

    Bridge

    假设今天您继承了IWindow介面撰写了一个I3DWindow介面,当中扩充一个drawBox()方法用于3D图形的绘制,简单的说, I3DWindow介面扩充了抽象行为,为了让实现I3DWindow的类别也能在XWindow与Windows XP两个不同的系统中运行,您必须再度撰写与系统相关的实现代码。

    Bridge

    简单的说,抽象行为定义与平台相关实现混杂在一起了,为了将抽象部份与它的实现部份分离,使它们都可以独立地变化,您可以使用以下的结构。

    Bridge

    在上图的右边中,与平台相关的实现部份,被与右边抽象行方面的发展分开了,左边的抽象部份您可以一直发展下去,而不再因为绑定了平台特定实作方法,而使得整个结构越来越失去弹性。
    Bridge模式的 UML 类别结构图如下:

    Bridge

  • 相关阅读:
    django 开发Broken pipe from ('127.0.0.1', 58078)问题解决
    cocos2d-js中jsc逆向为js攻略
    ECshop 怎样修改商品详细页的“浏览次数”
    ecshop 加广告出现广告位的宽度值必须在1到1024之间
    Nginx 301重定向的配置
    ECSHOP安装百度编辑UEditor教程
    Ecshop商品详情页显示当前会员等级价格
    ECSHOP始终显示全部分类方法
    vps主机修改系统远程端口号/添加防火墙
    ecshop利用.htaccess实现301重定向的方法
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2467033.html
Copyright © 2011-2022 走看看