定义
将抽象和实现解耦,使得两者可以独立的变化
角色
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:提高灵活性和扩展性
参考资料:设计模式之禅(二)
文章转载于:https://www.jianshu.com/p/b77336075503
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~