进阶学习(3.9) Bridge Pattern 桥接模式
1, 什么是桥接
桥, 提供给两方, 或者多方相交汇的作用,
例如, A 函数想调用 B 函数,
常见的方法就是, 直接在A 中显式 调用B, 这样存在高耦合, 如果我们使用一个中间函数C, 在C里面显调用A, 再调用B, 像是这样
1.1 A -> B
1.2 C -> A -> B
A B 耦合就解开了,
1.3 更抽象的理解使用, 比如从数据库里面的数据, 怎么就变成了 Java 中的对象呢? 这中间肯定就有桥接模式的使用, 有很多很多的桥, 将数据库里面的数据, 解析成了Java 对象
2, 优缺点
2.1 解耦合, 如同第一点中所说的 , A 和 B 之间实现了解耦合
2.2 代码更加面向对象, 说白了, 写的代码牛逼
2.3 通过桥接模式可以实现不同接口直接的数据转换
2.4 A 和 B 虽然解了耦合, 但如果我 A 调完 B 我还要执行 A 中的一些代码怎么办, 就需要对A 函数就行拆分封装, 如果A里面很多调用的话, 就增加了代码的复杂程度, 越复杂, 等同于增加了, 代码维护性, 使用之前先考虑考虑
3, 代码示例
// 抽象桥
public interface IBridge {// 将hdmi 信号转换成vgaboolean HdmiToVga(IHdmi hdmi, IVga vga);
}// 实例桥
public class Bridge implements IBridge {@Overridepublic boolean HdmiToVga(IHdmi hdmi, IVga vga) {String data = hdmi.getData();System.out.println("对数据进行转换:" + data);vga.setData(data);return false;}
}// 抽象HDMI 协议
public interface IHdmi {String getData();boolean setData(String data);
}// 实例HDMI 信号协议
public class Hdmi implements IHdmi {private String data;@Overridepublic String getData() {return data;}@Overridepublic boolean setData(String data) {this.data = data;return true;}
}// 抽象Vga 协议
public interface IVga {String getData();boolean setData(String data);
}// 实例Vga
public class Vga implements IVga {private String data;@Overridepublic String getData() {return data;}@Overridepublic boolean setData(String data) {System.out.println("VGA 成功接收了数据: " + data);this.data = data;return true;}
}public static void main(String[] args) {IBridge bridge = new Bridge();IHdmi hdmi = new Hdmi();hdmi.setData("hello vga");IVga vga = new Vga();bridge.HdmiToVga(hdmi, vga);System.out.println(vga.getData());}//=========================
对数据进行转换:hello vga
VGA 成功接收了数据: hello vga
hello vga
进阶学习(3.9) Bridge Pattern 桥接模式相关推荐
- bridge pattern -- 桥接模式
Bridge模式又称为Handle/Body模式. 在软件系统中,经常面临着"某些结构复杂的对象"的创建工作,由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一 ...
- 进阶学习(3.14) Strategy Pattern 策略模式
1, 什么是策略模式 1.1 未达到预期目的的各种应对方案 1.2 程序代码中的每一个分支都可以称之为策略, 而策略模式,则是将行为划分到具体类, 使用类对象区分行为 2, 优缺点 2.1 减少 ...
- 进阶学习(3.13) Proxy Pattern 代理模式
1, 代理模式, 这个地方的代理不是指JDK 动态代理 2, 代理模式和策略模式很像, 要注意区分, 区分的特征就是 2.1) 装饰者可以对任何的装饰抽象实例进行装饰, https://blog.cs ...
- 进阶学习(3.11) Facade Pattern 门面模式
1, 什么叫门面模式, 也称之为接待员模式 1.1 我更愿意称之为阿拉丁模式, 阿拉丁灯神, 你想什么, 它就直接给你实现了, 你别管中间有多少困难, 他就直接给你实现了 1.2 好下面介绍门面模式, ...
- 进阶学习(3.8) Component Pattern 组合模式
1, 什么是组合模式 一句话概括, 复杂的实体类, 一个对象里面包含多个对象, 就是一种组合, 完善对象的数据多样性, 其实大部分的设计模式, 我们再日常编程中都会使用, 有些可能使用了完整的思想, ...
- 进阶学习(3.6) Prototype Pattern 原型模式
1, 什么是原型模式 1.1 通过浅拷贝(Cloneable)或者深拷贝(二进制流), 实现对一个复杂对象的刻复, 减少从零生成对象时消耗的性能 2,有什么业务场景 2.1 数据缓存, 查询数据库 ...
- 进阶学习(3.4) Builder Pattern 建造者模式
1, 解决了什么 1.1 按照步骤拆分复杂对象的创建 1.2 能快速查找到是哪个步骤出了问题 1.2 更换蓝图就可以生产不同的具象对象 2, 参与者 需求者(Builder), ...
- java/android 设计模式学习笔记(8)---桥接模式
这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一.桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分 ...
- 进阶学习(3.12) Operand Pattern 装饰器模式
1, 什么是装饰器 1.1 装饰针对的是某一对象, 它不会改变事物的本质, 比如一个人买了一顶帽子, 它本质还是一个人 1.2 比如一个Date 对象, 它本质还是一个Object, 这个太抽象 ...
最新文章
- key mysql_mysql中key 、primary key 、unique key 与index区别
- 推荐 | 统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜,Judea Pearl点赞...
- 略读《大教堂与市集》
- sharepoint安装心得_过程
- 原码加减交替法什么时候结束_2021考研初试结束,成绩什么时候公布?
- postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...
- Windows内核API HOOK 之 Inline Hook
- python输入三次密码程序_请教各位大神,为啥以下代码输入修改密码后连输错三次还是能输入...
- 11.策略模式(Strategy Pattern)
- keepalived+nginx双机热备+负载均衡
- matlab 矩阵转置
- Ubuntu 16.04使用阿里云邮箱命令行发送邮件配置
- matlab堆积式玫瑰图,用SAS实现堆积式南丁格尔玫瑰图Nightingale Rose Diagram (上)...
- html有序列表标签圆点,什么是无序列表、有序列表、定义列表?html列表标签学习笔记...
- 如何设计SEO关键字分析统计表
- 25种让你精力充沛的方法
- python代替云打码的超级鹰验证码识别第三方工具使用分享
- 微信自定义分享操作步骤
- Hadoop配置lzo压缩
- Git之一次Push的回滚之旅
热门文章
- 工信部明确公共互联网网络安全突发事件分级预警、应急
- vs调用matlab复杂,关于VS调用matlab的问题,求教大神
- @Autowired注解与@resource注解的区别(十分详细)
- MySql修改最大连接数的两种方式
- linux 进程数量限制,LINUX下每进程限制线程数量
- sed的基本用法和高级用法
- setsockopt
- ubuntu安装软件依赖
- pads铺铜不能开启drp_PowerPCB (PADS )常见问题全集-泪滴-规则设定
- winform 在panel怎么实现锚点定位_高德网络定位之“移动WiFi识别”