设计模式-桥接模式
桥接模式是什么?
桥接器模式(BridgePattern)又称为桥梁模式,它主要用意是为了实现抽象部分与实现部分解耦,使它们各自可以独立的变化。
蜡笔和毛笔的故事
设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果尺寸很大,那么用蜡笔绘制会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果有可能,最好有套打好蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地。
大家是不是想要好多蜡笔呢?
我们需要一套12种颜色的蜡笔,那么我们需要三套,同种颜色一粗一细一中。
我们在看一下毛笔这边需要大中小三支毛笔,一套水彩12色,画蓝天可以用大毛笔,画小鸟用小毛笔,各具特色。
为了一幅画,我们需要准备36支型号不同的蜡笔,改为毛笔三支就够了,当然要搭配12种颜料。
通过Bridge模式,我们把乘除运算3*12=36改成加法运算3+12=15
蜡笔和毛笔的区别
是在于笔和颜色是否能分离。桥接模式的用意是将抽象化(Abstraction)与实例化(Implementation)解耦,使第二者可以独立地变化。
关键就在于能否解耦,蜡笔的颜色和蜡笔本身分不开,所以就造成必须使用36支色彩、大小各异的蜡笔来绘制图画。而毛笔与颜料能够很高的解耦,各自独立变化,便简化了操作。
Bridge模式将继承关系转换为组合关系,从而降低系统间的耦合度,减少代码编写量,但这仅仅是Bridge模式带来的众多好处的一部分。
桥接模式特点
分离接口及其实现部分,有助于降低对实现部分的依赖性,从而产生更好的结构化系统。
提高可扩充性,层次结构进行扩充。
Jdbc和JRE
JRE本身就是一个很好的桥,先写好在Linux上执行JRE,在写好可以再windows下执行的JRE,这样无论什么样的Java程序只要配合相应的JRE就能在Linux或者Windows上运行。
Jdbc也是一个很好的桥,系统可以通过Jdbc链接不同的数据库,比如Oracle、Mysql数据库。
桥接模式和适配模式的区别
适配器:改变已有的两个接口让他们相容。
桥接模式:分离抽象和实现,使两者接口可以不同,目的是分离。
如果你那有两个已有模块,想让他们同时工作;如果你还什么都没有,但是想分开实现,那么桥接是一个选择。桥接是先有桥,才有两端东西,适配先有两边的东西,才有适配器
类图
小demo
桥梁抽象类
数据库接口
桥接实现类
数据库实现类
数据库实现类
测试类
测试结果
在github可以找到
https://github.com/xiaonongOne/Bridge
总结
桥接模式是一个非常有用的模式,也非常复杂,它很好的符合开放-封闭原则和优先使用对象,而不是继承这两个面向对象原则。