3

Documentumのサンプルコードが深くコメントされることは決してないので、私の質問は次のとおりです。

この行はどういう意味ですか?

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

3 に答える 3

6

Javaで安全に置き換えることができます

IDfQuery query = new DfQuery();

ファクトリメソッドを使用したこのアプローチは、COMが実行できることと実行できないことによって制約されていた昔のDocbasicの時代になります。

于 2009-11-06T14:31:04.013 に答える
5

古い質問への回答ですが、元のポスターは、どの代替案を使用できるかではなく、その行が何を意味するのかを尋ねました。

この行は、DFCUtilsクラス内の静的ファクトリメソッドによって作成されたオブジェクトのインスタンス内のファクトリメソッドから、IDfQuery実装のインスタンスを作成しています。次に、このオブジェクトは変数に割り当てられます。

それで: -

  • DfcUtils = getClientX()と呼ばれる静的メソッドを含むクラス
  • getClientX()=オブジェクトのインスタンスを返す静的ファクトリメソッド
  • getQuery()= getClientX()によって返されるオブジェクト内のファクトリメソッド。IDfQueryを実装するオブジェクトを返します。
  • query=新しいIDfQueryインスタンスを参照するために使用される変数

これは典型的なファクトリパターンであり、メソッド/関数getQuery()は、ルールまたは構成設定に基づいて、返すオブジェクトタイプを決定します。これは、インターフェイスの複数の実装が利用可能な場合に、具象クラスのインスタンスを作成するよりも望ましい方法です。通常、ファクトリはクラスブートストラッパーのように機能し、オブジェクトを返す前にプロパティを初期化します。

基本的に、IOC(制御の反転)と呼ばれる、返す実装を選択するswitchステートメントなどの条件を含むファクトリメソッドがある場合があります。

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() );
}
于 2012-10-16T15:35:04.993 に答える
0

1つを使用することができます

  IDfQuery query = new DfQuery();

アプローチ

ただし、現在のDFCガイドでは、コンストラクターを直接呼び出すのではなく、com.documentum.com.DfClientXファクトリクラスを使用してDfQueryなどのオブジェクトの新しいインスタンスを取得することを明確に推奨しています。

于 2012-08-23T11:59:10.423 に答える