定义

桥接模式(Bridge Pattern)是一种结构设计模式用于抽象部分与其实现部分分离,使它们可以独立地变化。这种模式通过创建一个桥接接口,将抽象类和其实现类解耦,使得修改扩展独立的抽象和实现变得更加容易。

桥接模式中,通常涉及以下几个核心组件

  1. 抽象化(Abstraction
  2. 精化抽象化(Refined Abstraction
  3. 实现化(Implementor)
  4. 具体实现化(Concrete Implementor)
    • 具体实现Implementor接口的类。
解决问题

总之,桥接模式通过建立一个桥梁连接抽象层次和实现层次,使得两者的变化可以独立进行。这种模式在设计系统时非常有用,特别是当系统需要多个维度上变化和扩展时。

使用场景
示例代码 1 – 概念实现:
// 抽象化角色
public abstract class Abstraction {
    protected Implementor implementor;

    protected Abstraction(Implementor implementor) {
        this.implementor = implementor;
    }

    public abstract void operation();
}

// 具体抽象化角色
public class RefinedAbstraction extends Abstraction {
    protected RefinedAbstraction(Implementor implementor) {
        super(implementor);
    }

    @Override
    public void operation() {
        implementor.operationImpl();
    }
}

// 实现化角色
public interface Implementor {
    void operationImpl();
}

// 具体实现化角色
public class ConcreteImplementorA implements Implementor {
    @Override
    public void operationImpl() {
        System.out.println("ConcreteImplementorA operation.");
    }
}

public class ConcreteImplementorB implements Implementor {
    @Override
    public void operationImpl() {
        System.out.println("ConcreteImplementorB operation.");
    }
}
示例代码 2 – 实际应用示例

假设有一个设备管理系统需要控制不同品牌电视机和不同类型遥控器

// 设备接口(实现化角色)
public interface Device {
    void turnOn();
    void turnOff();
    void setChannel(int channel);
}

// 遥控器抽象类(抽象化角色)
public abstract class RemoteControl {
    protected Device device;

    protected RemoteControl(Device device) {
        this.device = device;
    }

    public abstract void togglePower();
}

// 具体遥控器(细化抽象化角色)
public class AdvancedRemoteControl extends RemoteControl {
    public AdvancedRemoteControl(Device device) {
        super(device);
    }

    @Override
    public void togglePower() {
        // 实现切换电源功能
    }

    public void mute() {
        // 实现静音功能
    }
}

// 具体设备实现(具体实现化角色)
public class TV implements Device {
    @Override
    public void turnOn() {
        // 实现打开电视机
    }

    @Override
    public void turnOff() {
        // 实现关闭电视机
    }

    @Override
    public void setChannel(int channel) {
        // 实现切换频道
    }
}
主要符合的设计原则
  1. 开闭原则(Open-Closed Principle):
    • 桥接模式允许抽象部分和实现部分独立变化,它们可以独立扩展而无需修改原有代码。这就意味着系统对于扩展是开放的,但对于修改是封闭的。
  2. 组合优于继承(Composition over Inheritance):
  3. 单一职责原则(Single Responsibility Principle):
  4. 最少知识原则(Principle of Least Knowledge:
    • 桥接模式让具体的实现对使用它的抽象层透明,从而减少系统各部分之间的紧密耦合。
在JDK中的应用

虽然在JDK中这些例子并不总是被显式标记为桥接模式的应用,但它们确实使用了桥接模式的核心理念:将抽象和实现分离开来,使得它们可以独立地变化。

在Spring中的应用

虽然这些例子并不是桥接模式的典型应用,但它们在设计上确实采用了桥接模式的核心思想:通过提供统一的接口(抽象)并将具体的实现细节(实现)分离出去,从而增加了系统的灵活性和可扩展性


原文地址:https://blog.csdn.net/haoxin963/article/details/134571197

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30720.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注