打字猴:1.700476031e+09
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(){
1700476050
1700476051 /*
1700476052
1700476053 *业务处理……
1700476054
1700476055 */
1700476056
1700476057 super.request();
1700476058
1700476059 super.getImp().doAnything();
1700476060
1700476061 }
1700476062
1700476063 }
1700476064
1700476065 想想看,如果我们的实现化角色有很多的子接口,然后是一堆的子实现。如果在构造函数中不传递一个尽量明确的实现者,代码就很不清晰。我们来看场景类如何模拟,如代码清单29-20所示。
1700476066
1700476067 代码清单29-20 场景类
1700476068
1700476069 public class Client{
1700476070
1700476071 public static void main(String[]args){
1700476072
1700476073 //定义一个实现化角色
1700476074
1700476075 Implementor imp=new ConcreteImplementor1();
1700476076
1700476077 //定义一个抽象化角色
1700476078
1700476079 Abstraction abs=new RefinedAbstraction(imp);
1700476080
[ 上一页 ]  [ :1.700476031e+09 ]  [ 下一页 ]