设计模式 桥接模式

本文将介绍设计模式中的桥接模式。

一、什么是桥接模式?

桥接模式适用于一个类具有两个独立变化的维度时,它将两个维度均设计为独立的继承等级结构,用关联关系实现两个维度的组合,而不是让两个维度耦合在一起。

二、实现

1. 结构

2. 角色

  • Abstraction 抽象类:

    • 通常是抽象类
    • 包含若干具体业务方法,定义若干抽象业务方法
    • 与 Implementor 实现类接口具有关联关系,其中包含了一个类型为它的成员变量
  • RefinedAbstraction 扩充抽象类:

    • Abstraction 抽象类的具体实现,实现了在 Abstraction 抽象类中定义的若干抽象业务方法
  • Implementor 实现类接口:

    • 声明一些基本操作
  • ConcreteImplementor 具体实现类:

    • 实现 Implementor 实现类接口中定义的基本操作

3. 简单示例

Abstraction:

1
2
3
4
5
public abstract class Abstraction {
protected Implementor implementor;

public abstract void operation();
}

RefinedAbstraction:

1
2
3
4
5
6
7
public class RefinedAbstraction extends Abstraction {
private Implementor implementor;

public abstract void operation() {
···
}
}

Implementor:

1
2
3
public interface Implementor {
public void operation();
}

ConcreteImplementor:

1
2
3
4
5
public class Implementor implements Implementor {
public void operation() {
···
}
}

三、优缺点

1. 优点

  • 提升系统的可扩展性,在不修改原有代码的情况下,同一个类的两个维度都可以任意扩展

2. 缺点

  • 增加系统的理解成本和设计难度
  • 要求有两个独立变化的维度,其使用范围存在一定局限性

参考

  • 《Java 设计模式》