Documentumのサンプルコードが深くコメントされることは決してないので、私の質問は次のとおりです。
この行はどういう意味ですか?
IDfQuery query = DfcUtils.getClientX().getQuery();
Documentumのサンプルコードが深くコメントされることは決してないので、私の質問は次のとおりです。
この行はどういう意味ですか?
IDfQuery query = DfcUtils.getClientX().getQuery();
Javaで安全に置き換えることができます
IDfQuery query = new DfQuery();
ファクトリメソッドを使用したこのアプローチは、COMが実行できることと実行できないことによって制約されていた昔のDocbasicの時代になります。
古い質問への回答ですが、元のポスターは、どの代替案を使用できるかではなく、その行が何を意味するのかを尋ねました。
この行は、DFCUtilsクラス内の静的ファクトリメソッドによって作成されたオブジェクトのインスタンス内のファクトリメソッドから、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() );
}
1つを使用することができます
IDfQuery query = new DfQuery();
アプローチ
ただし、現在のDFCガイドでは、コンストラクターを直接呼び出すのではなく、com.documentum.com.DfClientXファクトリクラスを使用してDfQueryなどのオブジェクトの新しいインスタンスを取得することを明確に推奨しています。