前言
- 掌握桥接模式的应用场景
- 掌握桥接模式的使用
- 掌握桥接模式的优缺点
一、桥接模式
桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或柄体模式,是将抽象部分与它的具体实现部分分离,使他们都可以独立的变化。
通过组合的方式建立两个类之间的联系
二、适用场景
- 在抽象和具体实现之间需要增加更多的灵活性的场景。
- 一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展。
- 不希望适用继承,或因为多层继承导致系统类的个数剧增。
三、基本结构
- 抽象化角色(Abstraction):定义抽象类,并包含一个对实现化对象的引用。
- 扩展抽象化角色(Refined Abstraction):是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
- 实现化角色(Implementor):定义实现化角色的接口,供扩展抽象化角色调用。
- 具体实现化角色(Concrete Implementor):给出实现化角色接口的具体实现。
四、基本使用
1. 实现化角色
/**
* 实现化角色
*/
public interface Implementor {
void operate();
}
2. 具体实现化角色
/**
* 具体实现
*/
public class ConcreteImplementor implements Implementor {
@Override
public void operate() {
System.out.println("具体实现化角色");
}
}
3. 抽象化角色
/**
* 抽象化角色
*/
public abstract class Abstraction {
protected Implementor implementor;
protected Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public abstract void operate();
}
4. 扩展抽象化角色
/**
* 扩展抽象化角色
*/
public class RefinedAbstraction extends Abstraction {
protected RefinedAbstraction(Implementor implementor) {
super(implementor);
}
@Override
public void operate() {
implementor.operate();
System.out.println("扩展抽象化角色");
}
}
5. 客户端
public class Client {
public static void main(String[] args) {
RefinedAbstraction refinedAbstraction = new RefinedAbstraction(new ConcreteImplementor());
refinedAbstraction.operate();
}
}
总结
1. 优点
- 分离抽象部分及其具体实现部分
- 提高了系统的扩展性
- 符合开闭原则
- 符合合成复用原则
2. 缺点
- 增加了系统的理解与设计难度
- 需要正确地识别系统中两个独立变化的维度