定义
将抽象和实现解耦,使得两者可以独立的变化
角色
1:抽象化角色(Abstraction)
该角色抽象化给出的定义,并保存一个队实现化对象的引用
public abstract class Abstraction{
private Implementor imp;
public Abstraction(Implementor imp){
this.imp = imp;
}
public void operation(){
this.imp.operationImp();
}
}
2:实现化角色(Implementor)
该角色给出实现化角色的接口,但不给出具体的实现
public interface Implementor{
//方法的实现化声明
public void operationImp();
}
3:修正抽象化角色(RefinedAbstraction)
该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正
public class RefinedAbstraction extends Abstraction{
public RefinedAbstraction (Implementor imp){
super(imp);
}
@Override
public void operation(){
//doing something 修正的业务代码
}
}
4:具体实现化(ConcreteImplementor)
该角色对实现化角色接口中的方法进行具体实现。
public class ConcreteImplementor implements Implementor{
@Override
public void operationImp(){
//doing something 业务处理
}
}
调用示例
public class client{
public static void main(String [] args){
Implementor implementor = new ConcreteImplementor();
Abstraction abstraction = new RefinedAbsraction(implementor);
abstraction.operation();
}
}
优点
1:可以解决继承的缺点
2:实现对客户透明
3:提高灵活性和扩展性
参考资料:设计模式之禅(二)