zoukankan      html  css  js  c++  java
  • 七个结构模式之桥接模式(Bridge Pattern)

    问题:
    当存在多个独立的变化维度时,如果仍采用多层继承结构,会急剧的增加类的个数,因此可以考虑将各个维度分类,使他们不相互影响。

    定义:
    将抽象部分与它的实现部分进行分离,抽象部分只保留最为本质的部分,而其他对该类的扩展均放到实现部分,进而使他们独立地变化。并在抽象层建立耦合,方便对各个维度进行扩展。

    结构图:

    • Abstracttion:抽象类,是整个桥接模式所表述的各种类别的核心类,例如毛笔-颜色中的毛笔,图片-操作系统中的图片。首先它定义了扩展类中的接口,另外它还定义了一个关于实现类Implementor的成员对象impl,由此来与实现维度产生联系。
    • RefineAbstracttion:扩充抽象类,实现了抽象类定义的接口,即实现核心类的扩展操作,并且可以调用impl相关的业务方法。
    • Implementor:实现类接口,定义了与Abstraction另外一个维度的基本接口,其它继承类在此接口进行实现和扩展。Implementor的接口设计成Abstraction类的另一类属性和行为,对其进行修饰和相关操作。
    • ConcreteImple:具体实现类,实现了Implementor定义的接口,再具体程序中将替换父类,做具体的执行操作。

    注意:

    • 使用桥接模式前,需要识别出两个独立变化的维度,然后将它们设计为两个独立的继承等级结构,并在抽象层建立耦合。对于固有特征可以设计为抽象部分,对于行为和属性可以设计为实现类。行为和其它属性与固有特征存在一种设置关系,可以使用成员对象进行关联。

    • 桥接模式和适配器模式的联合使用:桥接模式一般用于系统初步设计阶段,分析系统有哪些独立变化的维度,然后将其分解并在抽象层建立耦合。当初步设计完成,并在后期发现无法与已有类无法协同工作,可以使用适配器模式。

    优点:

    • 分离抽象和实现两个维度,解耦抽象和实现的绑定关系,使得各个维度可以独立变化。提高系统的可扩展性,不需要修改原有系统。
    • 是设计模式基本原则的很好体现,符合开闭原则,单一职责原则,合成复用原则,里氏替换原则,依赖倒置原则,接口隔离原则等。

    缺点:

    • 在分析和辨别两个维度的时候有一定的困难,并且增加系统复杂度。

    适用情景:

    • 含有多个维度的独立变化的类结构,每个维度都可以扩展。
    • 避免在层次之间使用继承关系,通过桥接模式可以使用组合复用原则进行扩展。

    实例:

    BridgePattern.java

  • 相关阅读:
    Java如何实现跨平台
    什么是软件开发工具包(SDK)
    什么是编程语言
    Java Hello World源代码notepad++版
    win10安装JDK
    JDK安装与配置(Windows 7系统)
    Eclipse安装与使用
    Eclipse Neon 汉化
    Eclipse Neon安装指导
    使用Sql语句快速将数据表转换成实体类
  • 原文地址:https://www.cnblogs.com/zhangfei614/p/6017453.html
Copyright © 2011-2022 走看看