设计模式10-桥接模式

定义

桥接模式,用于把抽象模式与实现化解耦,使得两者可以独立变化

实现

1
2
3
public interface Runner{
void run(int speed);
}
1
2
3
4
5
6
public class LiuXiang implements Runner{
@Override
public void run(int speed){
//run
}
}
1
2
3
4
5
6
public class Bolt implements Runner{
@Override
public void run(int speed){
//run
}
}
1
2
3
4
5
6
7
8
public abstract class ABRunner{
protected Runner runner;
protected ABRunner(Runner runner){
this.runner = runner;
}

public abstract void run();
}
1
2
3
4
5
6
7
8
9
10
11
12
public class RunnerBridge extends ABRunner{
int speed;
public RunnerBridge(int speed,Runner runner){
super(runner);
this.speed = speed;
}

@Override
public void run(){
runner.run(speed);
}
}
1
2
3
4
5
6
public static void main(String[] args){
RunnerBridge bolt = new RunnerBridge(100, new Bolt());
RunnerBridge liuxiang = new RunnerBridge(100, new LiuXiang());
bolt.run();
liuxiang.run();
}

很明显,这个更适合于参数抽离的场景,多参数的时候可以通过桥接者增加灵活性。将原来的实现类抽象变成一个实现者。

这种实现方式很像Android canvas图像编程那边的实现。canvas那一块也是设计模式的提倡者设计的。

优点

1、抽象和实现分离
2、扩展能力很强
3、实现细节对客户透明

缺点

会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,对开发者的要求就比较高。