什么是getQuery方法?

eng*_*ran 3 documentum dfc

Documentum示例代码从未被深深评论过,所以我的问题是:

这条线是什么意思?

IDfQuery query = DfcUtils.getClientX().getQuery();
Run Code Online (Sandbox Code Playgroud)

Dav*_*rre 6

您可以安全地用Java替换它

IDfQuery query = new DfQuery();
Run Code Online (Sandbox Code Playgroud)

采用工厂方法的方法来自于旧的Docbasic时代,它受到COM能够或不能做的约束


小智 5

一个旧问题的答案,但原始的海报询问线路的含义,而不是可以使用的替代品.

该行正在从DFCUtils类中的静态工厂方法创建的对象实例中的工厂方法创建IDfQuery实现的实例.然后将此对象分配给变量.

所以: -

  • DfcUtils =包含名为getClientX()的静态方法的类
  • getClientX()=一个返回对象实例的静态工厂方法
  • getQuery()= getClientX()返回的对象中的工厂方法,它返回一个实现IDfQuery的对象;
  • query =用于引用新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)