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

  • 相关阅读:
    递归——8月4日
    练习:结构体、枚举类型——8月3日
    结构体、枚举类型——8月3日
    数组——7月25日
    类的复习——7月25日
    异常保护——7月25日
    类以及练习——7月25日
    javase学习小结二
    javase学习小结一
    产生随机数的方法
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2467033.html
Copyright © 2011-2022 走看看