定义
将抽象化和实现化脱耦,使二者可以独立的变化。
分析
抽象化
多个实体中的共同概念特性。一组对象如果有相同的概念联系,那便可以通过一个共同的类来描述。如果一写类具有共同的概念性联系,往往可以用一个抽象类来描述。
实现化
抽象化给出的具体实现就是实现化。一个类的实力就是这个累的实现化。具体子类是抽象超类的实现化。
脱藕
将两个类之间的强关联转为弱关联。强关联:编译期已经确定的,无法在运行时动态改变的关联。弱关联:动态确定切可在运行时动态改变的关联。继承便是强关联,组合(聚合)是弱关联。
举例
使用桥接模式的关键在于找出抽象化角色和实现化角色。这里的空中巴士、波音、麦道都是飞机制造商,而载客飞机和载货飞机是飞机种类。很明显,不管是飞机制造商还是飞机种类都是还会增加的。制造商制造飞机,所以制造商是飞机的一个属性。即飞机含有一个制造商对象。所以,制造商是抽象化,飞机是实现化。
abstract class AirPlaneMaker{ abstract public void produce(); } abstract class AirPlane{ abstract public void fly(); protected AirPlaneMaker airPlaneMaker; }
AirPlane扮演抽象化角色,因必须持有AirPlaneMaker的引用,所以不可能为接口。
class PassengerPlane extends AirPlane{ public void fly() { } } class CargoPlane extends AirPlane{ public void fly() { } }
抽象化角色的实现类。
class Airbus extends AirPlaneMaker{ public void produce() { } } class Boeing extends AirPlaneMaker{ public void produce() { } } class MD extends AirPlaneMaker{ public void produce() { } }
实现化角色的实现类。
两个结构通过组合(聚合)联系到一起,当任意一方需要拓展添加子类时,通过多态衔接。无需修改原有代码即可完成拓展。设计贴合“开闭”原则。
参考:
《Java与模式》
相关推荐
VMware 15虚拟机桥接模式无法上网问题 步骤 1:在设置中找到 网络和internet—>>更改适配器选项—–>>以太网 查看 共享网络给虚拟机(有些电脑不用) 步骤2:查看VMware虚拟网络编辑器的VMnet0桥接模式设置 ...
所有模式都可分为类模式和对象模式两种,类模式是继承,对象模式是委托,而桥接模式和策略模式都是将任务委托给另外一个接口去实现,那么两者的区别什么呢?
Bridge 桥接模式(结构型模式)视频
图片浏览器的接口设计-桥接模式的运用 解决问题: 一个图像格式有两个基本的方面,一是结构,二是表象。其结构决定了图像是怎样存储的,而其表象决定了图像是怎样显示在屏幕上的。对于一个图像格式(BMP、JPG等)来...
利用桥接模式完成以下实例: 1、编辑与作者。出版社的编辑负责策划图书,并遴选作者完成图书的编著,然后根据图书的印张发布图书。作者负责完成图书的编著工作。 2、模拟毛笔:现需要提供大中小3种型号的画笔,...
桥接模式 桥接模式
桥接模式 C++ 实现
VMWare 6.0桥接模式虚拟机网络配置
设计模式 java 桥接模式
桥接模式的例子源码。这个源码因完成仓促,仅用来解释说明桥接模式含义,代码规范稍有欠缺,仅供参考。
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
桥接模式和装饰模式,设计模式实验报告,BlueJ
设计模式专题之(十)桥接模式---设计模式桥接模式示例代码(python--c++)
设计模式-桥接模式(讲解及其实现代码)
设计模式 - 桥接模式
设计模式的桥接模式的例子,希望对大家有用
桥接模式通过将抽象部分和代码部分相分离,使之沿各自的维度变化而不互相影响,使用的时候通过对象参数进行连接,参数可进行变化
桥接模式的示例代码和文档,学习桥接模式的参考资料。
Android桥接模式demo,同步文章地址:http://blog.csdn.net/qq_28690547/article/details/51144783
海尔(Haier)、TCL、海信(Hisense)桥接模式