モジュールAは、モジュールBがinterface
を定義している場合、およびモジュールBがインターフェイスを実装するコールバックオブジェクトを渡すために呼び出すことができるメソッドを提供する場合、モジュールBに依存せずにモジュールBを呼び出すことができます。
は、私がfoobarのライブラリーを定義したと仮定し、foobarのライブラリのステータスがあるため、いくつかの外部イベントで変更される可能性があることとします。
interface StatusCallback {
void statusChange(Status status);
}
class Foobar {
...
void registerStatusCallback(StatusCallback statusCallback);
...
}
クライアントライブラリにそれを提供し、StatusCallback
をimplmentsインスタンスを作成し、それを使用しています:
Foobar foobar = ...;
statusCallback = new StatusCallback() {
void statusChange(Status status) {
...do something with changed status...
}
};
foobar.registerStatusCallback(statusCallback);
ライブラリー・クライアントは、ステータスの変更を認識するようにしたい場合、私は
コールバックメカニズムを提供することができ
外部イベントが発生し、ステータスが変化すると、ライブラリはクライアントのstatusChange(status)
メソッドを呼び出します。しかし、ライブラリのソースコードはクライアントコードに依存しません。
これについて詳しく説明できますか?私はあまり理解しませんでした.. – user5636236
@ user5636236、上記の私の拡張答えを見てください。 –