桥接模式
来源:互联网 发布:恒大淘宝目前市值 编辑:程序博客网 时间:2024/06/05 14:43
桥接模式
介绍
桥接适用于把抽象化与实现化解耦,使得二者可以独立变化。(结构型模式)
用来解决两个或者多个纬度的变化,使用桥接模式可以降低复杂度。将两个角色之间的继承关系改为聚合关系,这样两者可以独立的变化。
例子
就像大话设计模式中讲的一样,每个手机都有其对应的功能(软件),而这些功能在不同手机上可能不兼容,那么列出一个手机品牌和其对应的部分功能的结构图如下:
但是这样的话,不管要增加一个手机品牌还是要增加一个软件,操作都会很复杂。
因此用桥接模式把这这两个维度之间的继承关系改为聚合关系会使这个问题变得简单,聚合关系的结构图如下:
DEMO
手机软件抽象类
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public abstract class HandSetSoft { public abstract void run();}
手机游戏
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public class HandSetGame extends HandSetSoft { @Override public void run() { System.out.println("运行手机游戏"); }}
手机通讯录
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public class HandSetAdressList extends HandSetSoft { @Override public void run() { System.out.println("运行手机通讯录"); }}
手机品牌
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public abstract class HandSetBrand { HandSetSoft handSetSoft; public void setHandSetSoft(HandSetSoft handSetSoft){ this.handSetSoft = handSetSoft; } public abstract void run();}
手机品牌N
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public class HandSetBrandN extends HandSetBrand { @Override public void run() { handSetSoft.run(); }}
手机品牌A
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public class HandSetBrandA extends HandSetBrand { @Override public void run() { handSetSoft.run(); }}
测试类
package factory.pattern.bridge;/** * Created by FK on 2017/7/26. */public class Test { public static void main(String[] args) { HandSetBrand hb ; hb = new HandSetBrandA(); hb.setHandSetSoft(new HandSetGame()); hb.run(); hb.setHandSetSoft(new HandSetAdressList()); hb.run(); hb = new HandSetBrandN(); hb.setHandSetSoft(new HandSetGame()); hb.run(); hb.setHandSetSoft(new HandSetAdressList()); hb.run(); }}
代码都在github上,地址是fk5431
https://github.com/fk5431/designPatterns
阅读全文
1 0
- 设计模式:适配器模式,桥接模式
- 设计模式----桥接模式
- 设计模式---桥接模式
- 结构性模式-桥接模式
- 设计模式:桥接模式
- 设计模式 桥接模式
- 设计模式 - 桥接模式
- 设计模式--桥接模式
- 设计模式--桥接模式
- 设计模式 - 桥接模式
- 设计模式-桥接模式
- 设计模式 - 桥接模式
- 设计模式 - 桥接模式
- 【设计模式-桥接模式】
- 设计模式:桥接模式
- 【设计模式】----桥接模式
- 【设计模式】桥接模式
- 设计模式--桥接模式
- 阶乘之和
- 用python爬虫批量下载pdf
- 多线程和异步
- Project **** is not configured as a MyEclipse Web-Struts Project.
- PAT乙级 1002. 写出这个数 (20)
- 桥接模式
- 2、Java WebSocket实现服务端主动发消息给客户端
- Android Studio apk打包以及获取apk签名信息
- SVMcgForClass函数报错分析 错误使用 svmtrain (line 233) Y must be a vector or a character array. 出错 SVMcgForCla
- huffman 文件压缩
- Picture
- 7.26 D
- 异步fifo的设计(三)
- 最后的绝唱:接口和单例——面向对象