0%

桥接模式

桥接模式

将抽象和实现分离,使得两者可以独立的变化

核心概念

  • Abstraction 抽象部分的接口,需要维护实现部分的对象引用
  • RefinedAbstraction 扩展抽象部分的接口
  • Implementor 实现部分的接口
  • ConcreteImplementor 实现接口的对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public interface Implementor {
void implOperator();
}

public class ConcreteImplementorA implements Implementor{
@Override
public void implOperator() {
System.out.println("实现A");
}
}

public class ConcreteImplementorB implements Implementor{
@Override
public void implOperator() {
System.out.println("实现B");
}
}

public abstract class Abstraction {

private Implementor impl;

public Abstraction(Implementor impl) {
this.impl = impl;
}

public void operator(){
impl.implOperator();
}
}

public class RefinedAbstraction extends Abstraction{

public RefinedAbstraction(Implementor impl){
super(impl);
}

public void otherOperator(){
operator();
}
}

优缺点

优点

  • 分离抽象和实现部分
  • 更好的扩展性
  • 可动态切换实现
  • 可减少子类个数

缺点

使用场景

  • 不希望在抽象部分和实现部分采用固定的绑定关系
  • 抽象部分和实现部分都能扩展的情况
  • 实现部分的修改不会对客户端产生影响
  • 解除抽象与实现之间的耦合,使得二者能够独立变化

欢迎关注我的其它发布渠道