開発者が使用する 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 コード例のボーナスポイント! 前もって感謝します!