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

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

Java设计模式 - 桥接模式

😄 生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆 一个有梦有戏的人 @怒放吧德德
🌝分享学习心得,欢迎指正,大家一起学习成长!

java设计模式2.jpg

简介

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

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

桥接模式实例

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

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

UML图:
image.png

提供商标接口类,汽车品牌是他的实现类;汽车类是抽象类,汽车的类别通过继承抽象类来分离出来。

代码示例

代码如下:

①、品牌接口

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();
    }
}

运行结果:
image.png

👍创作不易,如有错误请指正,感谢观看!记得一键三连哦!👍

💓德德小建议:

理解设计模式不是一件简单的事情,需要不断的学习和动手去练习,才能理解。只有掌握好设计模式,才能够真正的理解SpringAOP和Mybatis的底层原理。各位读者可以和我一样,动手敲一敲代码,甚至用不同的例子来做,通过debug一步一步调试,还有就是多看看别人的例子。能够有助于理解!谢谢各位观看指点!❤️ ❤️ ❤️
相关文章
|
25天前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
38 0
[Java]23种设计模式
|
1月前
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
|
9天前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
1月前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
|
1月前
|
设计模式 Java
Java设计模式
Java设计模式
28 0
|
1月前
|
设计模式 Java
Java设计模式之外观模式
这篇文章详细解释了Java设计模式之外观模式的原理及其应用场景,并通过具体代码示例展示了如何通过外观模式简化子系统的使用。
29 0
|
1月前
|
设计模式 Java
Java设计模式之桥接模式
这篇文章介绍了Java设计模式中的桥接模式,包括桥接模式的目的、实现方式,并通过具体代码示例展示了如何分离抽象与实现,使得两者可以独立变化。
43 0
|
设计模式 Java
Java桥接模式(bridge)
Java桥接模式(bridge)
Java桥接模式(bridge)
|
11天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
7天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
27 9