结构图
模式说明
类设计
模式说明
- 扩展点在两条线,一条是Abstraction的实现类;另一条是Implementor的实现类。Abstraction通过持有一个implementor对象的引用,在Abstraction和Implementor之间建立一个bridge,因此可以让系统在两个维度上独立发展。
- 客户端可以选择使用哪个具体的Abstraction。
- 客户端可以选择使用哪个具体的Implementor。
- 将抽象部分与它的实现部分分离,使它们可以对立地变化。
public static void main(String[] args) {
Abstraction abs = new RefinedAbstraction();
// use implementorA
abs.setImplementor(new ConcreteImplementorA());
abs.operation();
// use implementorB
abs.setImplementor(new ConcreteImplementorB());
abs.operation();
}
类设计
public class Abstraction {
private Implementor implementor;
public void setImplementor(Implementor implementor) {
this.implementor = implementor;
}
public void operation() {
implementor.operation();
}
}
public interface Implementor {
public void operation();
}
public class RefinedAbstraction extends Abstraction {
@Override
public void operation() {
super.operation();
}
}
public class ConcreteImplementorA implements Implementor {
@Override
public void operation() {
System.out.println("implementor A");
}
}
public class ConcreteImplementorB implements Implementor {
@Override
public void operation() {
System.out.println("implementor B");
}
}