Documentum 示例代码从未被深入评论,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
Documentum 示例代码从未被深入评论,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
您可以在 Java 中安全地将其替换为
IDfQuery query = new DfQuery();
使用工厂方法的这种方法来自旧的 Docbasic 时代,它受到 COM 可以或不能做什么的限制
一个老问题的答案,但原始海报问的是这条线的含义,而不是可以使用哪些替代方案。
该行从 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() );
}
一个可以使用
IDfQuery query = new DfQuery();
方法
然而,当前的 DFC 指南明确建议使用 com.documentum.com.DfClientX 工厂类来获取对象的新实例,例如 DfQuery,而不是直接调用构造函数