美文网首页
必知必会的设计模式2

必知必会的设计模式2

作者: jkwen | 来源:发表于2021-02-24 10:10 被阅读0次

桥接模式(Bridge Pattern)

属结构型设计模式,也称桥梁模式,「将抽象和实现解耦,使得两者可以独立地变化」

桥接模式的重点在于解耦,为的就是解决继承带来的缺点。例如在多层继承的情况下,改动就会变得很困难,甚至牵一发而动全身,为了满足需求就必须解耦。重构的重点就在于分离出抽象和实现两部分,通过抽象部分持有实现部分的引用,从而完成桥接关联。这样抽象部分的子类实现与实现部分的子类实现就可以解耦,相互独立变化。


桥接模式.jpg

对于「抽象部分」和「实现部分」的定义,书中没有明确给出,但大致可以这么规定,持有另一方对象引用的就是抽象部分,它所做的是一种行为规范,明确做什么这一类的事,而实现部分是指具体怎么做。

另外,和「装饰模式」相比较,如果抽象装饰类不继承自功能抽象类,那么就可以演变为「桥接模式」了,可见模式与模式间的转换可以很灵巧,无非是针对某个场景得出的一种解决方案。

优缺点

  • 抽象和实现解耦
  • 易扩充
  • 实现细节封装透明

使用场景

  • 接口或抽象类变动可能性较大
  • 重用性较高的场景,例如多个子类继承实现的情况

在 Android 中的使用

在「Android 进阶解密」书中的第 191 页说到 WindowManagerImpl 将部分功能实现交给成员变量 WindowManagerGlobal 来实现,使用了桥接模式。但按书本资料描述的桥接模式定义,感觉有点不像,如果是这样的,那我觉得可能这么来理解,即抽象部分的子类(WindowManagerImpl)持有实现部分子类(WindowManagerGlobal)引用,并且实际的增,删,更新窗口是由 WindowManagerGlobal 来实现的。这样理解的话,我觉得倒像是桥接模式的广义定义,即 A 类持有 B 类的引用,并且实际通过 B 类对象来完成部分功能。

不过,在 WMS 相关的内容这块确实能找到桥接模式的应用,例如 Window 类是个抽象类,其内部有一个 WindowManager 类型的变量。 PhoneWindow 继承自 Window,是具体的实现子类。WindowManagerImpl 实现了 WindowManager 接口,负责 Window 相关的操作。那么这里就是桥接模式的体现,Window 作为抽象部分,WindowManager 作为实现部分,我看是蛮标准的桥接模式。

我们自己在实现桥接模式时,要抓住唯一的重点:解耦。

参考内容

「设计模式之禅(第 2 版)」
「Android 源码设计模式解析与实战」

相关文章

  • 必知必会的设计模式2

    桥接模式(Bridge Pattern) 属结构型设计模式,也称桥梁模式,「将抽象和实现解耦,使得两者可以独立地变...

  • Java面试经典题目六(网络知识及设计模式)

    设计模式(必知必会) 【1】你知道那些设计模式? 答:单例模式、观察者模式、MVC模式、工厂模式、桥接模式、代理模...

  • 代理模式续集

    动态代理 讲代理模式不讲动态代理简直是耍流氓。相比 必知必会的设计模式8[https://www.jianshu....

  • 必知必会的设计模式7

    策略模式(Strategy Pattern) 属行为类设计模式,「定义一组算法,将每个算法封装起来,并且使它们之间...

  • 必知必会的设计模式8

    代理模式(Proxy Pattern) 属结构型设计模式,「为其他对象提供一种代理以控制对这个对象的访问」。 代理...

  • 必知必会的设计模式9

    外观模式(Facade Pattern) 属结构型设计模式,「要求一个子系统的外部与其内部的通信必须通过一个统一的...

  • 必知必会的设计模式10

    责任链模式 属行为型设计模式,「使多个对象(处理者)都有机会处理请求,从而避免请求发起者和处理者之间的耦合关系。将...

  • 必知必会的设计模式1

    装饰模式(Decorator Pattern) 属结构型设计模式,也称包装模式,「动态地给一个对象添加一些额外的职...

  • 必知必会的设计模式5

    观察者模式(Observer Pattern) 属行为类设计模式,「定义对象间一种一对多的依赖关系,使得每当一个对...

  • 必知必会的设计模式6

    单例模式(Singleton Pattern) 属创建类设计模式,「确保某个类只有一个实例,而且自行实例化并向整个...

网友评论

      本文标题:必知必会的设计模式2

      本文链接:https://www.haomeiwen.com/subject/qwqkfltx.html