i3geek.com
闫庚哲的个人博客

Java设计模式——桥接模式

动机

有圆形、矩形2个形状,还有红色、绿色2个颜色。如果想实现不同形状和不同颜色的组合,我们有两种方案:第一种,为每一种形状的每一种颜色设计一个类,问题冗余,类过多;第二种,根据实际的需要,对形状和颜色进行组合。

第二种方案就是最佳方案,在多维度影响因素下,将他们分离,也就是桥接模式的动机。将继承关系转化为关联关系,从而降低了类与类之间的耦合,减少了代码的编写量。

定义

将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

功能

将抽象部分与实现部分分离,使它们都可以独立的变化。具体使用时,通过组装的方式形成需要的产品

特点,可以实现多维影响因素的解耦,通过一层一层往外套

实现

 

../_images/Bridge.jpg

  • Abstraction:抽象类 :第二维影响因素的接口
  • RefinedAbstraction:扩充抽象类 :第二维影响因素的具体实现
  • Implementor:实现类接口    : 第一维影响因素的接口
  • ConcreteImplementor:具体实现类     :第一维影响因素的具体实现

可以一层层继续往外包装接口和实现类(通过组合来调用上一层接口),从而实现多层的影响因素(详细看代码 实现三维影响因素)

时序图:

应用

Java为AWT中的每一个GUI构件都提供了一个Peer构件,使得Java软件运行在不同操作系统中有不同的视感。在AWT中的Peer架构就使用了桥接模式。

实现源代码:https://github.com/yangengzhe/coding-guide_i3geek/tree/master/docs/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F

 

赞(0)
未经允许不得转载:爱上极客 » Java设计模式——桥接模式
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    拜读大侠博客,感悟人生道理!

    三五豪侠传2年前 (2017-03-02)回复