发布时间:2026-04-26阅读(1)
为什么要使用设计模式?说到底还是为了程序拓展和移植性,无法就是那几种设计思想
单一职责原则 , 开闭原则 里氏替换原则 ,依赖倒置原则,接口隔离原则,组合复用原则 迪米特法则这些思想和原则就是为了帮助我们更好规范地写出简洁,高效易拓展的程序,原理理解很抽象。
我们来谈谈桥接模式:
桥接模式属于结构性设计模式,所谓结构性就好比一个工程的图纸,你前期必须得设计好,且主体是不让修改的,所以结构是不允许变化的,至于你具体怎么施工,不同的工种根据结构图纸进行施工,总不能你基础打好了,你说你要改结构这不现实,所以结构理论是不允许修改,如果你非得修改那么就重建,代码也一样,重构。
应用设计场景:你是某个公司的员工,你有很多同事,但是同事都做着不同的工作和任务,但是老板每天需要关注你们的工作进度和情况,那么你和同事都是同属于一个公司,但是相同的事情都是需要上班工作,只是工作内容不同,都是在给公司创造价值;
工作任务,同事,你自己, 都是属于公司构成和一部分,所以这个结构是不允许改变,没有员工的公司,那不叫公司。
工作结构图:

员工:开发,测试,架构师,总监,经理,主管,Ui,测试,产品经理
工作:开发写代码,测试测试bug,架构师设计架构,总监摸摸鱼,经理项目管理,产品经理设计原型。
创作价值:员工——> 工作 互联网公司。
需要桥接起来就是公司的制度。所以核心就在工作,大家都不工作就没有了公司 。形成了一个桥接的结构,那么这个模式就是桥接设计模式。通俗易懂地来说某公司制度连接了员工和工作,给公司创造价值。
编码设计:
抽象类:
package com.xy.design.bridge.abstracts;import com.xy.design.bridge.MakingTaskImplementorService;import com.xy.design.bridge.vo.WorkPlanVO;/** * <p> * * @author yang * @since 2022-09-24 */public abstract class PersonnelAbstract { protected MakingTaskImplementorService makingTaskImplementorService; protected PersonnelAbstract(MakingTaskImplementorService makingTaskImplementorService) { this.makingTaskImplementorService = makingTaskImplementorService; } public abstract void business(WorkPlanVO workPlanVO);}
工作业务接口:
package com.xy.design.bridge;import com.xy.design.bridge.vo.WorkPlanVO;/** * <p> * * @author yang * @since 2022-09-24 */public interface MakingTaskImplementorService { /** *工作业务方法 */ void businessWorkPlan(WorkPlanVO workPlanVO);}/** * <p> * * @author yang * @since 2022-09-24 */public class DevelopmentImplBridge implements MakingTaskImplementorService { @Override public void businessWorkPlan(WorkPlanVO workPlanVO) { System.out.println("开发主要是做了什么:" workPlanVO.getWorkContent()); }}public class PmImplBridge implements MakingTaskImplementorService { @Override public void businessWorkPlan(WorkPlanVO workPlanVO) { System.out.println("Pm主要是做了什么:" workPlanVO.getWorkContent()); }}/** * <p> * * @author yang * @since 2022-09-24 */public class UiDesignImplBridge implements MakingTaskImplementorService { @Override public void businessWorkPlan(WorkPlanVO workPlanVO) { System.out.println("ui主要是做了什么:" workPlanVO.getWorkContent()); }}
拓展实现:
package com.xy.design.bridge.abstracts.impl;import com.xy.design.bridge.MakingTaskImplementorService;import com.xy.design.bridge.abstracts.PersonnelAbstract;import com.xy.design.bridge.vo.WorkPlanVO;/** * <p> * * @author yang * @since 2022-09-24 */public class Coding extends PersonnelAbstract { public Coding(MakingTaskImplementorService makingTaskImplementorService) { super(makingTaskImplementorService); } @Override public void business(WorkPlanVO workPlanVO) { this.makingTaskImplementorService.businessWorkPlan(workPlanVO); }}/** * <p> * * @author yang * @since 2022-09-24 */public class UiDesign extends PersonnelAbstract { public UiDesign(MakingTaskImplementorService makingTaskImplementorService) { super(makingTaskImplementorService); } @Override public void business(WorkPlanVO workPlanVO) { this.makingTaskImplementorService.businessWorkPlan(workPlanVO); }}
测试:
package com.xy.design.bridge.test;import com.xy.design.bridge.MakingTaskImplementorService;import com.xy.design.bridge.abstracts.PersonnelAbstract;import com.xy.design.bridge.abstracts.impl.*;import com.xy.design.bridge.vo.WorkPlanVO;/** * <p> * * @author yang * @since 2022-09-24 */public class Test { public static void main(String[] args) { WorkPlanVO dev = new WorkPlanVO("一包烟,一个参数传一天",8,1,"java开发"); PersonnelAbstract devAbs = new Coding(new DevelopmentImplBridge()); devAbs.business(dev); WorkPlanVO ui = new WorkPlanVO("抠图扣一天",8,1,"UI"); PersonnelAbstract uiAbs = new UiDesign(new UiDesignImplBridge()); uiAbs.business(ui); WorkPlanVO pm = new WorkPlanVO("pm 吹水一整天",8,1,"PM"); PersonnelAbstract pmAbs = new PmDemand(new PmImplBridge()); pmAbs.business(pm); }}

如果你需要拓展业务只需要增加Bridge实现类,如果还有多个不同的员工,比如架构师,前端开发等直接加入拓展即可,抽象和实现分离,没有依赖关系。
实际业务场景:
1,我们数据库jdbc连接,不同的jdbc连接需要兼容项目,jdbcteamplate
2,okhttp 方式。
3,aop通知


这种方式其实没有完全使用桥接模式的方式。
我们再来看aop的源码
他里面就使用了桥接模式方式






当前里面还用到了适配器设计模式:

当然我们使用的框架源码当中很多都使用了桥接设计模式,当然也有很多其他设计模式。感兴趣的同学可以自己去研究源码。
————没有与生俱来的天赋,都是后天的努力拼搏(我是小杨,谢谢你的关注和支持)
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图