java-android设计模式学习笔记(8):桥接模式-编程开发技术

java-android设计模式学习笔记(8):桥接模式-编程开发技术

ID:30779781

大小:410.09 KB

页数:13页

时间:2019-01-03

java-android设计模式学习笔记(8):桥接模式-编程开发技术_第1页
java-android设计模式学习笔记(8):桥接模式-编程开发技术_第2页
java-android设计模式学习笔记(8):桥接模式-编程开发技术_第3页
java-android设计模式学习笔记(8):桥接模式-编程开发技术_第4页
java-android设计模式学习笔记(8):桥接模式-编程开发技术_第5页
资源描述:

《java-android设计模式学习笔记(8):桥接模式-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java/android设计模式学习笔记(8):桥接模式-编程开发技术java/android设计模式学习笔记(8):桥接模式原文出处:Shawn_Dut这篇博客我们来介绍一下桥接模式(BridgePattern),它也是结构型设计模式之一。桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分和实现部分搭桥。在现实生活中也冇很多这样的例子,一个物品在搭配不同的配件时会产生不同的动作和结果,例如一辆赛车搭配的是硬胎或者是软胎就能够在干燥的马路上行驶,而如果要在下雨的路而行驶,就需要搭配雨胎了,这种根据行驶的路而不同,

2、需耍搭配不同的轮胎的变化的情况,我们从软件设计的角度来分析,就是一个系统由于自身的逻辑,会有两个或多个维度的变化,有时还会形成一种树状的关系,而为了应对这种变化,我们就可以使用桥接模式來进行系统的解耦。桥接模式,作用是将一个系统的抽象部分和实现部分分离,使它们都可以独立地进行变化,对应到上而就是赛车的种类可以相对变化,轮胎的种类可以相对变化,形成一种交叉的关系,最后的结果就是一种赛车对应一种轮胎就能够成功产生一种结果和行为。PS:对技术感兴趣的同鞋加群544645972一起交流。设计模式总目录java/android设计模式学习笔记目录特点将抽象部分与实现部分分离,使他们

3、都可以独立地进行变化。为了达到让抽象部分和实现部分独立变化的目的,抽象部分会拥有实现部分的接口对象,有了实现部分的接口对象Z后,就能够通过这个接口來调用具体实现部分的功能。桥接在程序上就体现成了抽象部分拥有实现部分的接口对象,维护桥接就是维护这个关系,也就是说,桥接模式中的桥接是一个单方向的关系,只能够抽象部分去使用实现部分的对彖,而不能反过来。桥接模式适用于以下的情形:•如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,可以通过桥接模式使他们在抽象层建立一个关联关系;•那些不希望使用继承或因为多层次继承导致系统类的

4、个数极具增加的系统;•一个类存在两个独立变化的维度,而这两个维度都需要进行扩展。UML类图我们來看看桥接模式的uml图:AbstractionClient抽象{abstract}一mlmplementor+operation()C-Implementor+operationlmpl():void+operationlmpl():voidConcretel+operation桥接模式也分为四个角色:oAbstraction:抽象部分该类保持一个对实现部分对象的引用,抽象部分屮的方法需要调用实现部分的对象來实现,该类一般为抽象类;oRefinedAbstraction:优化的

5、抽象部分抽象部分的具体实现,该类一般对抽象部分的方法进行完善和扩展;oImplementor:实现部分可以为接口或者是抽象类,其方法不一定要与抽象部分中的一致,一般情况下是由实现部分提供基本的操作,而抽象部分定义的则是基于实现部分基本操作的业务方法;oConcretelmplementorA和ConcretelmplementorB:实现部分的具体实现完善实现部分中定义的具体逻辑。基于此我们就可以写岀桥接模式的通用代码,先是实现部分的代码:Implementor.classpublicintcrfaccImplcmcntor{voidoperationlmpl();Con

6、cretelmplementorA.classpublicclassConcretelmplementorAimplementsImplementor}©Overridepublicvoidoperationlmpl(){//具体实现}}ConcretelmplementorB.classpublicclassConcreteTmplementorBimplementsTmplementor{©Overridepublicvoidoperationlmpl(){〃具体实现}}然后是抽象部分的代码:Abstraction.classpublicabstractclassAb

7、straction{privateImplementorimplementor;publicAbstraction(Implcmcntorimplcmcntor){this,implementor=implementor;}publicvoidoperation(){implcmcntor.operationlmpl();RefinedAbstraction.classpublicclassRefinedAbstractionextendsAbstraction{publicRefinedAbstraction(Impleme

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。