设计模式之桥接模式(Bridge)
来源:互联网 发布:2010装饰定额预算软件 编辑:程序博客网 时间:2024/06/05 02:33
意图:
将抽象部分和它的实现部分分离,使他们都可以独立的变化.
适用性:
1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系.
2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充.
3.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译.
效果:
1.分类接口及其实现部分
2.提高可扩充性
3.实现细节对客户透明
代码实现:
package com.git.books.b_design_patterns.g_bridge;/** * * @Description: 桥接模式--实现类抽象接口 * @author: songqinghu * @date: 2017年3月2日 下午2:41:47 * Version:1.0 */public abstract class Brand { //获取品牌logo public abstract String getBrandLogo();}
package com.git.books.b_design_patterns.g_bridge;/** * * @Description:桥接模式-抽象引用接口 * @author: songqinghu * @date: 2017年3月2日 下午2:39:54 * Version:1.0 */public abstract class MobilePhone { protected Brand brand; public abstract void run(); public MobilePhone(Brand brand) { this.brand = brand; }}
package com.git.books.b_design_patterns.g_bridge;/** * * @Description: 1个cpu的手机 手机系统下的具体实现类 client将要调用的对象 * @author: songqinghu * @date: 2017年3月2日 下午2:47:39 * Version:1.0 */public class OneCPUMobilePhone extends MobilePhone { public OneCPUMobilePhone(Brand brand) { super(brand); } @Override public void run() { System.out.println("the one cpu mobile phone is run and the brand is : " + brand.getBrandLogo()); }}
package com.git.books.b_design_patterns.g_bridge;public class TwoCPUMobilePhone extends MobilePhone { public TwoCPUMobilePhone(Brand brand) { super(brand); } @Override public void run() { System.out.println("the two cpu "+brand.getBrandLogo()+" mobile phone is run !"); }}
package com.git.books.b_design_patterns.g_bridge;public class HuaWeiBrand extends Brand { @Override public String getBrandLogo() { return " HuiWei "; }}
package com.git.books.b_design_patterns.g_bridge;public class XiaomiBrand extends Brand { @Override public String getBrandLogo() { return " Xiaomi "; }}
package com.git.books.b_design_patterns.g_bridge;public class XiaomiBrand extends Brand { @Override public String getBrandLogo() { return " Xiaomi "; }}
结构图:
重点:
使用引用关系建立两个分层间的桥接,使其能独立的扩展(开闭);
参考:
<<设计模式>>
<<Java与模式>>
0 0
- 设计模式之-Bridge-- 桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式-bridge
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式(Bridge)
- 设计模式之 Bridge 模式(桥接模式)
- 设计模式之Bridge模式(桥接模式)
- 设计模式之桥接Bridge
- 设计模式之Bridge桥接设计模式
- 设计模式之bridge(桥)模式
- 设计模式之Bridge(桥模式)
- 设计模式之桥模式(Bridge)
- 设计模式之Bridge
- 设计模式之Bridge
- 设计模式之Bridge
- 详细全面的 SpringBoot 文件上传
- socket 流程(服务器,客户端)
- 文件的拷贝、删除、保存以及关键字替换
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- Android仿ios底部弹出框效果
- 设计模式之桥接模式(Bridge)
- 页面动态引用JS或CSS文件
- 工具优化(3)-- MarkDown基础语法与快捷键
- 国内可用的maven仓库地址
- Android图像与动画<1>
- c++石头-剪刀-布游戏c++程序设计原理与实践第4章习题
- Android Studio的下载与开发环境的搭建
- 【转】antlr使用
- 简单动画