ホームページ >Java >&#&チュートリアル >Observer パターンを使用して Java でカスタム イベントを作成する方法

Observer パターンを使用して Java でカスタム イベントを作成する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-28 01:35:13773ブラウズ

How to Create a Custom Event in Java Using the Observer Pattern?

Java でカスタム イベントを作成する: オブザーバー パターンを利用する

Java アプリケーションを開発する場合、多くの場合、異なるオブジェクト間の通信を実装する必要があります。信頼性が高く、柔軟な対応が可能です。イベントとリスナーは、この目的のための堅牢なソリューションを提供します。

次のシナリオを考えてみましょう:

When event "object 1 say 'hello'" happens, then object 2 responds to that event by saying "hello".

このようなイベント駆動型のインタラクションを作成するには、Observer パターンが便利です。オブザーバー パターンは、オブジェクト間の 1 対多の関係を定義します。この関係では、「イベント」が発生したときに、「オブザーバブル」 (イニシエーター) が登録されているすべての「オブザーバー」 (リスナーまたはレスポンダー) に通知します。

これを実装するにはパターンの場合は、次の手順に従います:

  1. イベントを定義します:イベントを表すインターフェイスを作成します。この場合、次のようになります。

    interface HelloEvent {
     void someoneSaidHello();
    }
  2. Observable の作成: このクラスは、イベントのサブスクリプションを管理し、イベントの発生時にオブザーバーに通知します。 「イニシエーター」という名前を付けることができます:

    class Initiater {
     private List<HelloEventListener> listeners = new ArrayList<>();
     public void addListener(HelloEventListener toAdd) { listeners.add(toAdd); }
     public void sayHello() { System.out.println("Hello!!"); for (HelloEventListener hl: listeners) hl.someoneSaidHello(); }
    }
  3. オブザーバーの作成: このクラスはイベント インターフェイスを実装し、イベントが発生したときにトリガーされる動作を定義します。が発生します。以下はレスポンダーのサンプルです:

    class Responder implements HelloEventListener {
     @Override public void someoneSaidHello() { System.out.println("Hello there..."); }
    }
  4. オブザーバーの登録: 「addListener」メソッドを使用してオブザーバーをオブザーバブルに接続します:

    Initiater initiater = new Initiater();
    Responder responder = new Responder();
    initiater.addListener(responder);
  5. をトリガーしますイベント: オブザーバブルは、特定のメソッド (例: "sayHello") を呼び出すことでイベントをトリガーします。

    initiater.sayHello(); // Output: "Hello!!!" "Hello there..."

これらの手順に従うと、 Observer パターンを使用した Java のカスタム イベント メカニズム。オブジェクトが分離された拡張可能な方法で通信し、特定のイベントに反応できるようにします。

以上がObserver パターンを使用して Java でカスタム イベントを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。