设计模式-桥接模式

 

桥接模式是什么?

桥接器模式(BridgePattern)又称为桥梁模式,它主要用意是为了实现抽象部分与实现部分解耦,使它们各自可以独立的变化。

                                                              timg (8).jpg              

蜡笔和毛笔的故事

设想要绘制一幅图画,蓝天、白云、绿树、小鸟,如果尺寸很大,那么用蜡笔绘制会遇到点麻烦。毕竟细细的蜡笔要涂出一片蓝天,是有些麻烦。如果有可能,最好有套打好蜡笔,粗粗的蜡笔很快能涂抹完成。至于色彩吗,最好每种颜色来支粗的,除了蓝天还有绿地。

大家是不是想要好多蜡笔呢?

我们需要一套12种颜色的蜡笔,那么我们需要三套,同种颜色一粗一细一中。

我们在看一下毛笔这边需要大中小三支毛笔,一套水彩12色,画蓝天可以用大毛笔,画小鸟用小毛笔,各具特色。

为了一幅画,我们需要准备36支型号不同的蜡笔,改为毛笔三支就够了,当然要搭配12种颜料。

通过Bridge模式,我们把乘除运算3*12=36改成加法运算3+12=15

                                                                  timg.jpg

蜡笔和毛笔的区别

是在于笔和颜色是否能分离。桥接模式的用意是将抽象化(Abstraction)与实例化(Implementation)解耦,使第二者可以独立地变化。

关键就在于能否解耦,蜡笔的颜色和蜡笔本身分不开,所以就造成必须使用36支色彩、大小各异的蜡笔来绘制图画。而毛笔与颜料能够很高的解耦,各自独立变化,便简化了操作。

Bridge模式将继承关系转换为组合关系,从而降低系统间的耦合度,减少代码编写量,但这仅仅是Bridge模式带来的众多好处的一部分。

桥接模式特点

分离接口及其实现部分,有助于降低对实现部分的依赖性,从而产生更好的结构化系统。

提高可扩充性,层次结构进行扩充。

Jdbc和JRE

JRE本身就是一个很好的桥,先写好在Linux上执行JRE,在写好可以再windows下执行的JRE,这样无论什么样的Java程序只要配合相应的JRE就能在Linux或者Windows上运行。

Jdbc也是一个很好的桥,系统可以通过Jdbc链接不同的数据库,比如Oracle、Mysql数据库。

桥接模式和适配模式的区别

适配器:改变已有的两个接口让他们相容。

桥接模式:分离抽象和实现,使两者接口可以不同,目的是分离。

如果你那有两个已有模块,想让他们同时工作;如果你还什么都没有,但是想分开实现,那么桥接是一个选择。桥接是先有桥,才有两端东西,适配先有两边的东西,才有适配器

类图

图片2.png

小demo

                                                                                     桥梁抽象类

                                                                     image.png

                                                                                        数据库接口

                                                                      image.png

                                                                                         桥接实现类

                                                                       image.png

                                                                                       数据库实现类

                                                                       image.png

                                                                                          数据库实现类

                                                                       image.png

                                                                                              测试类

                                                                       image.png

                                                                                        测试结果

                                                                                 image.png

 在github可以找到

 https://github.com/xiaonongOne/Bridge

总结

桥接模式是一个非常有用的模式,也非常复杂,它很好的符合开放-封闭原则和优先使用对象,而不是继承这两个面向对象原则。

 

微信图片_20181016184125.jpg

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值