いくつかのベンダーAPIの上に構築されるJavaプロジェクトを作成したいと思います。APIは、上記のベンダーのソフトウェアを実行しているサーバーに接続し、さまざまなアクションを実行します。
2つの異なるAPIバージョンでサポートされている2つの異なるバージョンのサーバーがあります。APIへの変更は、内部実装のみにあります。IE古いバージョンで使用できるクラス、インターフェイス、メソッドなどは、新しいバージョンに存在します。したがって、私が作成するコードは、どちらのAPIバージョンでもコンパイルおよび実行する必要があります。APIを使用して接続するときにサーバーに提示されるAPIにはバージョン番号があり、その特定のサーバーで異なるバージョンのAPIを使用することはできません。
実行時にJARファイルをオンザフライで切り替える方法はありますか?(ac / c ++ DLLのようなもの??)
実行時にAPIバージョンを切り替えることができない場合、問題を処理するための最も洗練された方法は何ですか。コードを2x(APIバージョンごとに1つ)ビルドしますか?
何かが足りないことを願っていますが、アプローチ2は理想的ではないようです。理由のより具体的な例を次に示します。
package org.myhypotheticalwrapper.analyzer;
import org.myhypothetical.worker;
import org.myhypothetical.comparator;
public class Analyzer {
Worker w1 = new Worker();
Worker w2 = new Worker();
Comparator c = new Comparator(w1.connectAndDoStuff(),w2.connectAndDoStuff());
c.generateReport();
}
これが私のジレンマです。w1を古いAPIでビルドし、w2を新しいAPIでビルドして、適切なサーバーに接続できるようにします。それらが上にあるAPIを除いて、それらは同じです(同一のコード)。コードが同一であっても、単に異なるAPIバージョンに対応するために、W1とW2の2つの一意の名前のクラスタイプを作成する必要がありますか?やりとりしたいAPIバージョンがたくさんあると、手に負えなくなる可能性があります。
どんな提案やコメントも大歓迎です。
-新しい男