そのため、オブジェクトの状態が変更されると、それに依存するすべてのオブジェクトが通知され、それに応じて変更されます。
オブザーバーパターンを実装するには多くの方法があります。このパターンには、観察者とオブジェクトが観察される2つの役割を含める必要があります。オブザーバーとオブザーバーの間には「観察」の論理的な関係があります。オブザーバーが変化すると、オブザーバーはそのような変更を観察し、対応する変更を発行します。
/***オブザーバーインターフェイス:オブザーバー、オブザーバーモードを使用する必要があるクラスこのインターフェイスを実装する必要があります*/publicインターフェイスオブザーバー{public void update(object obj);} /***オブザーバー(通常は抽象クラス、拡張に便利):メソッドを宣言し、いくつかの変更が発生し、オブザーバーに変更を通知します。 */public interface veveobsed {public void addobserver(observer obs); // Observer Object public void removserver(Observer obs); // Observerオブジェクトpublic void notifyobservers(String変更); /***ターゲットオブザーバー:オブザーバーのインターフェイスを実装し、オブザーバーオブジェクトで対応する操作を実行します*/パブリッククラスコンクリート視聴装置beveobsed {// observerオブジェクトコレクションプライベートリスト<オブザーバー>リスト= new arraylist <observer>(); @Override public void addobserver(observer obs)//オブザーバーを追加{if(!list.contains(obs)){list.add(obs); }} @Override public void removeObserver(Observer obs)//オブザーバーは、観測者に観測をキャンセルし、コンテナからオブザーバーを削除するように指示します{if(list.contains(obs)){list.remove(obs); }} @Override public void notifyobservers(string change){//オブジェクトと呼び出しメソッドを個別にトラバースし、通知操作を更新して(Observer obs:list){obs.update(change); }}} /***ターゲットが観察された(特定のオブザーバー)*/パブリッククラスの特定のウォッチャーはオブザーバー{@Override public void update(object obj){system.out.print.println(obj.tostring()) concretewatched();オブザーバーobs1 = new speicalwatcher();オブザーバーobs2 = new speciepwatcher();オブザーバーobs3 = new speicalwatcher(); bobs.addobserver(obs1); //オブザーバーオブジェクトを追加するbobs.addobserver(obs2); bobs.addobserver(obs3); bobs.notifyobservers( "*** notified ***"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------最後に結果を印刷します:
上記はこの記事に関するものです。誰もがJavaプログラミングを学ぶことが役立つことを願っています。