一、什么是桥接模式
桥接模式,将抽象部分与实现部分分离,使它们都可以独立地变化。
二、UML 图
三、代码示例
1、 Implementor 实现
public interface Implementor {
public void operation();
}
2、 Implementor 的实现A
public class ConcreteImplementorA implements Implementor{
@Override
public void operation() {
System.out.println("实现A");
}
}
3、 Implementor 的实现B
public class ConcreteImplementorB implements Implementor{
@Override
public void operation() {
System.out.println("实现B");
}
}
4、抽象
public abstract class Abstraction {
protected Implementor implementor;
public abstract void operation() ;
public void setImplementor(Implementor implementor){
this.implementor = implementor;
}
}
5、 Abstraction 的子类 Refrection
public class Refrection extends Abstraction{
@Override
public void operation() {
implementor.operation();
}
}
5、实现类
public class Main {
public static void main(String[] args) {
Abstraction ab = new Refrection();
ab.setImplementor(new ConcreteImplementorA());
ab.operation();
ab.setImplementor(new ConcreteImplementorB());
ab.operation();
}
}
四、总结
桥接模式将抽象和实现相分离的原因是实现有多种可能,那么就将实现分离出来,让其单独变化。实际应用场景比较多,如下图Spring Cache 和 Slf4j 的应用:
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减少它们之间的耦合。