【问题标题】:What is the getQuery method for?getQuery 方法有什么用?
【发布时间】:2010-12-13 20:41:01
【问题描述】:

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

这条线是什么意思?

IDfQuery query = DfcUtils.getClientX().getQuery();

【问题讨论】:

    标签: documentum dfc


    【解决方案1】:

    您可以在 Java 中安全地将其替换为

    IDfQuery query = new DfQuery();
    

    工厂方法的这种方法来自旧的 Docbasic 时代,它受到 COM 可以或不能做什么的限制

    【讨论】:

    • 抱歉,新的更好的答案即将到来! Abooth 解释得更好、更强、更快#daftpunkstyle
    • 确实,他对工厂模式的解释更好。但是工厂模式并不是 Documentum 代码的动机。 COM是
    【解决方案2】:

    一个老问题的答案,但原发帖人问的是这行是什么意思,而不是可以使用什么替代方案。

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

    所以:-

    • 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() );
    }
    

    【讨论】:

    • 你错过了我回答的重点。这不是这里的工厂模式。它所做的正是“new DfQuery()”。代码同样存在,只是为了让您在 Java 中拥有与在 VB 中相同的东西。
    【解决方案3】:

    可以使用

      IDfQuery query = new DfQuery();
    

    接近

    但是当前的 DFC 指南明确建议使用 com.documentum.com.DfClientX 工厂类来获取对象的新实例,例如 DfQuery,而不是直接调用构造函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-21
      • 2013-12-09
      • 2013-03-02
      • 1970-01-01
      • 2017-01-29
      • 2010-10-27
      相关资源
      最近更新 更多