ITPub博客

首页 > 应用开发 > > 【设计模式】Java设计模式 - 桥接模式

【设计模式】Java设计模式 - 桥接模式

作者:LCR_ 时间:2022-09-09 14:56:03 0 删除 编辑


1|1简介

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

1|2桥接模式实例

桥接模式:将实现和抽象放在两个不同的类层次中,使之各自可以独立改变。
他的主要特点是把抽象与行为分离开来,保持了各自的独立性和扩展。

举个汽车例子,汽车有多种品牌,也有多种类型,在扩展样式或者品牌的时候互不影响,我们就可以将抽象部分与实现部分分离,使它们都可以独立的变化,让它们独立变化,来减少它们之间耦合。

UML图:
在这里插入图片描述
提供商标接口类,汽车品牌是他的实现类;汽车类是抽象类,汽车的类别通过继承抽象类来分离出来。

1|3代码示例

代码如下:

①、品牌接口

package com.lyd.demo; /** * @Author: lyd * @Description: 汽车品牌的接口 * @Date: 2022-08-28 */ public interface Brand { void info(); void open(); void close(); }

②、汽车品牌

继承汽车接口类

package com.lyd.demo.car; import com.lyd.demo.Brand; /** * @Author: lyd * @Description: 奔驰汽车类 * @Date: 2022-08-28 */ public class Benz implements Brand { private String type; public Benz(String type) { this.type = type; } public void info() { System.out.println("奔驰汽车->" + type); } public void open() { System.out.println("奔驰汽车"); } public void close() { System.out.println("奔驰汽车"); } }

红旗汽车类相同,这里就不贴代码,详细代码之后会上传github中。

③、抽象汽车类

通过聚合方式,使用构造法获取品牌对象进行实例化

package com.lyd.demo; /** * @Author: lyd * @Description: 汽车抽象类 * @Date: 2022-08-28 */ public abstract class Car { private Brand brand; public Car(Brand brand) { this.brand = brand; } public void info() { this.brand.info(); } public void open() { this.brand.open(); } public void close() { this.brand.close(); } }

④、汽车类型子类

继承父类,重写父类方法,这里也调用了父类方法,用打印的方式简单理解

package com.lyd.demo.type; import com.lyd.demo.Brand; import com.lyd.demo.Car; /** * @Author: lyd * @Description: 新能源 * @Date: 2022-08-28 */ public class NewEnergy extends Car { public NewEnergy(Brand brand) { super(brand); } public void info() { System.out.print("新能源类型汽车 -- "); super.info(); } public void open() { System.out.print("新能源类型汽车启动 -- "); super.open(); } public void close() { System.out.print("新能源类型汽车关闭 -- "); super.close(); } }

⑤、桥接模式测试

通过new汽车类型方式获取汽车对象,其中可得到什么类型什么品牌的汽车

package com.lyd.demo.bridge; import com.lyd.demo.Car; import com.lyd.demo.car.Benz; import com.lyd.demo.car.HongQi; import com.lyd.demo.type.NewEnergy; import com.lyd.demo.type.Suv; /** * @Author: lyd * @Description: 测试 * @Date: 2022-08-28 */ public class BridgeTest { public static void main(String[] args) { Car banz = new Suv(new Benz("GLA")); banz.info(); banz.open(); banz.close(); Car hq = new NewEnergy(new HongQi("H5")); hq.info(); hq.open(); hq.close(); } }

运行结果:
在这里插入图片描述
👍创作不易,如有错误请指正,感谢观看!记得一键三连哦!👍

💓德德小建议:

理解设计模式不是一件简单的事情,需要不断的学习和动手去练习,才能理解。只有掌握好设计模式,才能够真正的理解SpringAOP和Mybatis的底层原理。各位读者可以和我一样,动手敲一敲代码,甚至用不同的例子来做,通过debug一步一步调试,还有就是多看看别人的例子。能够有助于理解!谢谢各位观看指点!❤️ ❤️ ❤️

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000523/viewspace-3121890/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-22

  • 博文量
    1402
  • 访问量
    15003