桥接模式
来源:互联网 发布:淘宝 产品对比 违规 编辑:程序博客网 时间:2024/06/10 01:13
桥接模式
一:桥接模式引入背景
设计模式是为了更好的解决面向对象编程中的耦合问题,就是提供一种解决特定上下文环境中的解决方案.那么我们来分析一下下面这种案例: 抽象出一个关系系---> 事物+功能=服务
生活中有一类事物集合:设为A1,A2,A3等事物,每个事物都有F1,F2,F3,F4,F5等多种功能,将事物和功能结合起来就可以组成服务了的.但是为了提供这样的服务,我们要编写多少类?计算一下,m*n个,而且耦合度较高,灵活度下降了太多.为此就来解决这个实际问题,给出一个非常合理的解决方案.这个就是著名的桥接模式.
这种设计模式的核心就是将抽象部分和实现部分进行灵活的进行组合.两种核心的部分就是事物+功能,下面就来从这两个部分进行分析实现.
二:案例实现
这里以大家非常熟悉的腾讯公司的QQ和微信两款即时聊天工具来分析.
1:简单分析一下,我们要实现的业务,就是腾讯公司提供的大家的聊天服务.
2:简单分析抽象出聊天的接口 展示源代码
public interface Communication { /** * 聊天接口方法 */void communication(String type);}3:微信实现聊天功能
public class WeiXinCommunication implements Communication {@Overridepublic void communication(String type) { System.out.println("腾讯旗下微信提供"+type+"聊天功能!");} }4:QQ实现聊天功能
public class QqCommunication implements Communication {@Overridepublic void communication(String type) {System.out.println("腾讯旗下QQ提供"+type+"聊天功能!");}}5:桥接类
public abstract class AbstractCommunication {/** * 具有聊天的功能 */ private Communication communication; /** * 初始化桥接抽象类 * @param communication */ public AbstractCommunication(Communication communication){ this.communication=communication; } /** * 回调聊天方法 */ public void communication(String type){ communication.communication(type); } }6:发送文本消息的类
public class TextMessage extends AbstractCommunication { public TextMessage(Communication communication) {super(communication);// TODO Auto-generated constructor stub}}7:发送语音消息的类
public class VoiceMessage extends AbstractCommunication {public VoiceMessage(Communication communication) {super(communication);// TODO Auto-generated constructor stub}}8:发送视频消息的类
public class VideoMessage extends AbstractCommunication {public VideoMessage(Communication communication) {super(communication);// TODO Auto-generated constructor stub} }9:测试桥接模式
public class TestCommunication {public static void main(String[] args) { Communication communication=new WeiXinCommunication(); TextMessage videoMessage=new TextMessage(communication); videoMessage.communication("发送文本"); }}测试运行截图如下:
分析实现过程的思路
那个接受消息类型的String type可以在用户测试的时候实现,有效的防止硬编码写死的问题.这样比较灵活的.这里分析核心的桥接类,那个类里面的成员变量如下:
那个接受消息类型的String type可以在用户测试的时候实现,有效的防止硬编码写死的问题.这样比较灵活的.这里分析核心的桥接类,那个类里面的成员变量如下:
private Communication communication;
对就是没有看错就是这个接口变量,就帮助我们将事物类和功能类巧妙的连接在了一起,桥接模式由此得名.
既然说是为特定的问题提供一种解决方案,那么就要满足需求的动态变化.桥接模式的动态变化分两种情况,
第一:新添加了事物,比如后面腾讯公司有发布了更加便捷的即时聊天工具,我们怎么来实现业务呐?
只需要实现聊天接口即可,其他不用改变.
第二;新添加了一种发送消息的方式
只需要给桥接抽象类进行派生一个子类就可以了.
阅读全文
0 0
- 设计模式:适配器模式,桥接模式
- 设计模式----桥接模式
- 设计模式---桥接模式
- 结构性模式-桥接模式
- 设计模式:桥接模式
- 设计模式 桥接模式
- 设计模式 - 桥接模式
- 设计模式--桥接模式
- 设计模式--桥接模式
- 设计模式 - 桥接模式
- 设计模式-桥接模式
- 设计模式 - 桥接模式
- 设计模式 - 桥接模式
- 【设计模式-桥接模式】
- 设计模式:桥接模式
- 【设计模式】----桥接模式
- 【设计模式】桥接模式
- 设计模式--桥接模式
- 血淋林的例子告诉你,为什么防“上传漏洞”要用白名单
- tensorflow模型转换
- android studio 加固和签名
- HDOJ 1016 DFS
- SSM
- 桥接模式
- [BZOJ1316]点分治关于定长问题的讨论
- 解决Maven项目中令人头痛的无错误但是有小红叉问题
- 2、获取配置文件中的属性
- Java中try catch finally语句中含有return语句的执行情况(总结版)
- SIGHUP信号与控制终端
- tftp使用
- java如何通过类加载器加载类和jar包
- CSS3动画效果加上简单@media响应式布局 week6学习
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
马坡富力湾
富力湾花园
富力湾 搜房
富力湾 酒店
富力湾租房
富力湾开发商
富力湾物业电话
富力湾天阔园物业
富力湾在哪
富力湾地产
惠州富力湾值得买吗
昆山逸景湾
世茂东壹号
水月周庄
千灯裕花园
苏豪国际广场
阳光华庭
湖滨花园
上海裕花园
奥林匹克花园
时代御湖
绿中海
凯德都会新峰
新城花园
永泰花苑
锦绣山庄
阳光华庭二手房
香港花园
昆山玫瑰湾房价
时代花园
石家庄玫瑰湾
金水湾
钱塘玫瑰湾
警苑小区
玫瑰湾小区
玫瑰湾楼盘
富力通轮胎
富林居
富居地毯价格
富加镇
富勒姆