1700476000
1700476001
//定义对实现化角色的引用
1700476002
1700476003
private Implementor imp;
1700476004
1700476005
//约束子类必须实现该构造函数
1700476006
1700476007
public Abstraction(Implementor_imp){
1700476008
1700476009
this.imp=_imp;
1700476010
1700476011
}
1700476012
1700476013
//自身的行为和属性
1700476014
1700476015
public void request(){
1700476016
1700476017
this.imp.doSomething();
1700476018
1700476019
}
1700476020
1700476021
//获得实现化角色
1700476022
1700476023
public Implementor getImp(){
1700476024
1700476025
return imp;
1700476026
1700476027
}
1700476028
1700476029
}
1700476030
1700476031
各位可能要问,为什么要增加一个构造函数?答案是为了提醒子类,你必须做这项工作,指定实现者,特别是已经明确了实现者,则尽量清晰明确地定义出来。我们来看具体的抽象化角色,如代码清单29-19所示。
1700476032
1700476033
代码清单29-19 具体抽象化角色
1700476034
1700476035
public class RefinedAbstraction extends Abstraction{
1700476036
1700476037
//覆写构造函数
1700476038
1700476039
public RefinedAbstraction(Implementor_imp){
1700476040
1700476041
super(_imp);
1700476042
1700476043
}
1700476044
1700476045
//修正父类的行为
1700476046
1700476047
@Override
1700476048
1700476049
public void request(){
[
上一页 ]
[ :1.700476e+09 ]
[
下一页 ]