Documentum示例代码从未被深深评论过,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
Run Code Online (Sandbox Code Playgroud)
您可以安全地用Java替换它
IDfQuery query = new DfQuery();
Run Code Online (Sandbox Code Playgroud)
采用工厂方法的方法来自于旧的Docbasic时代,它受到COM能够或不能做的约束
小智 5
一个旧问题的答案,但原始的海报询问线路的含义,而不是可以使用的替代品.
该行正在从DFCUtils类中的静态工厂方法创建的对象实例中的工厂方法创建IDfQuery实现的实例.然后将此对象分配给变量.
所以: -
这是典型的工厂模式,其中方法/函数getQuery()根据规则或配置设置确定要返回的对象类型.当接口的多个实现可用时,这比创建具体类的实例更可取.通常,工厂将像类引导程序一样,在将对象返回给您之前初始化属性.
从本质上讲,您可能有一个工厂方法,其中包含一个条件,例如switch语句,它选择要返回的实现,称为IOC(控制反转): -
public static IDfQuery getQuery(){
IDfQuery returnValue;
switch ( getDayOfWeek() ) {
case "Monday" : returnValue = new MondayQuery(); break;
case "Tuesday" : returnValue = new TuesdayQuery(); break;
case "Wednesday" : returnValue = new WednesdayQuery(); break;
case "Thursday" : returnValue = new ThursdayQuery(); break;
case "Friday" : returnValue = new FridayQuery(); break;
case "Saturday" : returnValue = new SaturdayQuery(); break;
case "Sunday" : returnValue = new SundayQuery(); break;
default: returnValue = null; break;
}
return returnValue;
}
public static String getDayOfWeek(){
return new SimpleDateFormat("EEEE").format( new Date() );
}
Run Code Online (Sandbox Code Playgroud)