动机
有圆形、矩形2个形状,还有红色、绿色2个颜色。如果想实现不同形状和不同颜色的组合,我们有两种方案:第一种,为每一种形状的每一种颜色设计一个类,问题冗余,类过多;第二种,根据实际的需要,对形状和颜色进行组合。
第二种方案就是最佳方案,在多维度影响因素下,将他们分离,也就是桥接模式的动机。将继承关系转化为关联关系,从而降低了类与类之间的耦合,减少了代码的编写量。
定义
将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
功能
将抽象部分与实现部分分离,使它们都可以独立的变化。具体使用时,通过组装的方式形成需要的产品
特点,可以实现多维影响因素的解耦,通过一层一层往外套
实现
- 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
拜读大侠博客,感悟人生道理!