设计模式:学习笔记(9)——桥接模式
设计模式:学习笔记(9)——桥接模式
桥接模式
什么是桥接模式
桥接模式是设计模式中最复杂的设计模式之一,它把事务对象和其具体行为、具体特征分离开来,使他们可以各自独立变化。
举个例子:有三个品牌的汽车,路虎,宝马,奔驰,每个品牌有两项特征,有无天窗、是否为自动挡。如果我们各自为其创建具体类的话,需要3*2*2=12个类。
比如单路虎车就有:
桥接模式就是将事务的特征和行为抽象出来,让他们各自变化,再最后把他们组合起来形成需要的各种类,减少了各维度间的耦合。
理解
首先我们将两项特征抽象出来
接着,通过访问器的方式,将这些特征附加到汽车上:
到这里我想,大家都应该知道桥接模式是怎么回事了吧。现在我们需要多少个类呢?即使包含抽象的父类,我们也只需要3+3+4=10个类。
桥接模式的简单实现
根据目前我们了解到的知识,我们来实现一辆无天窗的自动挡宝马汽车。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class abstract Transmission{} class abstract TopWindow{} class abstract Car{ protected Transmission t; protected TopWindow tw; public void setTransmission(Transmission t){ this .t = t} public void setTopWindow(TopWindow tw){ this .tw = tw} } class Auto extends Transmission{} class NoneTopWindow extends TopWindow{} class BWMCar extends Car{} /** * 组装一辆无天窗的自动挡宝马 */ public static void main(String[] args) { BWMCar bwm = new BWMCar(); bwm.setTransmission( new Auto()); bwm.setTopWindow( new NoneTopWindow()); //组装完成 } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步