この記事の主な研究は、Javaコールバック関数とオブザーバーパターンの実装です。具体的な紹介と実装コードは次のとおりです。
オブザーバーモード(パブリッシュサブスクライブモード、モデルビューモード、ソースリスナーモード、またはスレーブモードと呼ばれることもあります)は、ソフトウェア設計モードの一種です。このモードでは、ターゲットオブジェクトは、それに依存するすべてのオブザーバーオブジェクトを管理し、状態が変更されたときに通知を積極的に発行します。これは通常、各オブザーバーの方法を呼び出すことによって達成されます。このパターンは通常、イベント処理システムの実装に使用されます。
実際、オブザーバーモデルには、上記の橋と戦略を備えた一般的な使用環境があります。変化を独立してカプセル化して、最大の再利用とデカップリングを実現します。オブザーバーと後者の2つの違いは、オブザーバーパターンのターゲットとオブザーバーの変化が独立していないが、何らかのつながりがあることです。
オブザーバーモードは、Observableクラスとオブザーバーインターフェイスを介してJavaで実装されます。オブザーバーオブジェクトは、観測可能なオブジェクトの変更を監視します。観察可能なオブジェクトが変更されると、オブザーバーに通知され、対応する作業を実行できます。
パッケージcom.demo.test; import java.util.observable; import java.util.observer; //オブザーバーモードでは、ターゲットクラスはすべてのオブザーバーの参照を維持しますが、コールバックは参照クラスのみを維持します。 o、object arg){system.out.println( "concreteteobservera update");} // observer bstatic class concreteobserverbはオブザーバー{@Override public void usdupt(Observable o、object argable){System.out.out.print.println( "Concreteteobserverb updabe"); extends Observable {public void changevalue(){//保護されたメソッドは、subclass setChanged(); notifyobservers();}}でのみ呼び出すことができます。 {this.callback = callback;} public void call(){callback.oncall();}} public static void main(string [] args){// ObserverConcreteobservera observera = new Concreteobservera(); concreteobserverb = new concreteobserberbable verterbable concreteteobservable(); observable.addobserver(observera); observable.addobserver(observerb); system.out.println( "countobservers =" + observable.countobservers(); observable.changevalue(); // callback callbackdemo callbackdemo = callbackdemo(); callbackdemo.setlistener(new icallback(){@override public void oncall(){system.out.println( "callback oncall");}}); callbackdemo.call();}}}}出力結果:
countobservers = 2
concreteobserverbアップデート
concreteobserveraアップデート
コールバックoncall
上記のコードから、コールバック関数はオブザーバーパターンに属する必要があり、目的はラウンドロビンメカニズムを置き換え、コンポーネント間の結合を減らすことです。オブザーバーモードでは、ターゲットクラスはすべてのオブザーバーの参照を維持しますが、コールバックは参照のみを維持します。
上記は、この記事のJavaコールバック関数とオブザーバーパターンインスタンスコードに関するすべてです。すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!