開発者が使用する API を公開するフレームワークを作成しています。
public interface MyAPI {
public void doSomeStuff();
public int getWidgets(boolean hasRun);
}
開発者がしなければならないことは、これらの API メソッドに対してプロジェクトをコーディングすることだけです。また、実行時クラスパスにさまざまな「ドライバー」/「API バインディング」を配置し (JDBC や SLF4J の動作と同じように)、API メソッド呼び出し (doSomeStuff()など) をさまざまなサードパーティ リソース (ファイル、サーバーなど)。したがって、同じコードと API 呼び出しが、ランタイム クラスパスが認識するドライバー/バインディング (つまり、、、) に応じて、異なるリソースの操作にマップさmyapi-ftpれmyapi-sshますmyapi-teleportation。
このようなランタイム バインディングを可能にする SPI を作成 (およびMyAPIパッケージ化) し、呼び出しを正しい (具体的な) 実装にマップするにはどうすればよいですか? 言い換えれば、FTP サーバーからアクセスmyapi-ftpできる場合、getWidgets(boolean)(API と SPI の両方を利用するために) どうすればよいでしょうか?
具体的で機能する Java コード例のボーナスポイント! 前もって感謝します!