【发布时间】:2010-12-13 20:41:01
【问题描述】:
Documentum 示例代码从未被深入评论,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
【问题讨论】:
标签: documentum dfc
Documentum 示例代码从未被深入评论,所以我的问题是:
这条线是什么意思?
IDfQuery query = DfcUtils.getClientX().getQuery();
【问题讨论】:
标签: documentum dfc
您可以在 Java 中安全地将其替换为
IDfQuery query = new DfQuery();
工厂方法的这种方法来自旧的 Docbasic 时代,它受到 COM 可以或不能做什么的限制
【讨论】:
一个老问题的答案,但原发帖人问的是这行是什么意思,而不是可以使用什么替代方案。
该行正在创建 IDfQuery 实现的实例,从 DFCUtils 类中的静态工厂方法创建的对象实例中的工厂方法创建。然后将此对象分配给一个变量。
所以:-
这是一种典型的工厂模式,其中方法/函数 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,而不是直接调用构造函数
【讨论】: