一、简介
桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们单独变化,减少它们之间的耦合。
当有多个维度划分关联时,尽量用合成/聚合的关系,尽可能少的使用继承关系,减少它们之间的耦合。因为继承关系是强依赖,当父类有变化时,子类就要随之变化。
合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。
二、结构图
三、代码实现
Implementor:
public interface Implementor {
void operation();
}
ConcreteImplementorA:Implementor的实现类。
public class ConcreteImplementorA implements Implementor{
@Override
public void operation() {
System.out.println("具体实现A的方法执行");
}
}
ConcreteImplementorB:Implementor的实现类。
public class ConcreteImplementorB implements Implementor{
@Override
public void operation() {
System.out.println("具体实现B的方法执行");
}
}
Abstraction:
public abstract class Abstraction {
protected Implementor implementor;
public void setImplementor(Implementor implementor) {
this.implementor = implementor;
}
public abstract void operation();
}
RefinedAbstraction:Abstraction的实现类
public class RefinedAbstraction extends Abstraction{
@Override
public void operation() {
implementor.operation();
}
}
测试类:
public class Client {
public static void main(String[] args) {
Abstraction abstraction = new RefinedAbstraction();
abstraction.setImplementor(new ConcreteImplementorA());
abstraction.operation();
abstraction.setImplementor(new ConcreteImplementorB());
abstraction.operation();
}
}