@songying
2018-08-22T21:12:24.000000Z
字数 1179
阅读 973
设计模式
将抽象和实现解耦,使得两者可以独立的变化。
Abstraction: 抽象化角色
主要职责是定义出该角色的行为,同时保存一个对实现化角色的作用, 该角色一般为抽象类。
Implementor: 实现化角色
接口或抽象类,定义角色必须的行为和属性
RefinedAbstraction: 修正抽象化角色
引用实现化角色对抽象化角色进行修正
ConcreteImplement: 具体实现化角色
实现接口或抽象类定义的方法和属性
public abstract class Abstraction{
// 定义对实现化角色的引用
private Implementor imp;
// 约束子类必须实现该构造函数
public Abstraction(Implementor _imp){
this.imp = _imp;
}
// 自身的定义和属性
public void request(){
this.imp.doSomething();
}
// 获得实现化角色
public IMplementor getImp(){
return imp;
}
public inferface Implementor{
public void doSomething();
public void doAnything();
public class RefinedAbstraction extends Abstraction{
public RefinedAbstraction(Implementor _imp){
super(_imp)
}
@Override
public void request(){
super.request();
super.getImp().doAnything();
}
}
public class ConcreteImplementor1 implements Implementor{
public void doSomething(){
// 业务逻辑处理
}
public void doAnything(){
//业务逻辑处理
}
public class RefinedAbstraction extends {
// 覆写构造函数
public RefinedAbstraction(Implementor _imp){
super(_imp)
}
@Override
public void request(){
// 业务处理
super.request();
super.getImp().doAnything();
}
}
public class CLient{
public static void main(String[] args){
Implenmentor imp = new ConcreteImplementor1();
Abstraction abs = new RefinedAbstraction(imp);
abs.request();
}
}