定义
将抽象部分与实现部分分离,使它们都可以独立地进行变化。
使用场景
一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
Java 代码示例
// 实现部分
public interface Implementor {
void operationImpl();
}
public class ImplementorA implements Implementor {
@Override
public void operationImpl() {
}
}
public class ImplementorB implements Implementor {
@Override
public void operationImpl() {
}
}
// 抽象部分
public abstract class Abstraction {
private Implementor mImplementor;
public Abstraction(Implementor implementor) {
mImplementor = implementor;
}
public void operation() {
mImplementor.operationImpl();
}
}
public class AbstractionA extends Abstraction {
public AbstractionA(Implementor implementor) {
super(implementor);
}
@Override
public void operation() {
super.operation();
}
}
public class AbstractionB extends Abstraction {
public AbstractionB(Implementor implementor) {
super(implementor);
}
@Override
public void operation() {
super.operation();
}
}