1700475994
1700475995
上面定义了两个具体实现化角色——代表两个不同的业务逻辑。我们再来看抽象化角色,如代码清单29-18所示。
1700475996
1700475997
代码清单29-18 抽象化角色
1700475998
1700475999
public abstract class Abstraction{
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
}
[
上一页 ]
[ :1.700475994e+09 ]
[
下一页 ]