Javaでオブザーバーパターンを利用の方法

Javaにおけるオブザーバーパターンの利用には、以下のようなステップが必要となる:

  1. 観察者インターフェイス(Observer)を定義します。このインターフェイスは観察者が実装する必要があるメソッドを定義し、通常は観察対象から送信される通知を受信するために使用されるupdate()メソッドが含まれます。
  2. 観察対象(Subject)インターフェースの定義。このインターフェースは通常、オブザーバーの登録、オブザーバーの削除、オブザーバーへの通知など、観察対象が実装する必要があるメソッドを定義します。
  3. 具体的なオブザーバーオブジェクトに対して、オブザーバーインターフェースの方法を実装し、具体的なニーズに応じて соответствующие действия.
  4. 具体的なオブザーバーオブジェクトに対してオブザーバーインターフェースを実装し、オブザーバーの登録、削除、通知などのメソッドを実装する。
  5. 監視対象は、監視者リストを保持する必要があります。監視対象は、登録されている監視者オブジェクトを格納するために監視者リストを保持する必要があります。
  6. 観測対象の状態変化時に観測者に通知: 観測対象の状態が変化した際、観測者リストを走査し、各観測者のupdate()メソッドを呼び出して通知を送信する。

簡単なサンプルコードを以下に示します:

// 定义观察者接口
interface Observer {
    void update(String message);
}

// 定义被观察者接口
interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers(String message);
}

// 实现观察者接口
class ConcreteObserver implements Observer {
    private String name;

    public ConcreteObserver(String name) {
        this.name = name;
    }

    public void update(String message) {
        System.out.println(name + " received message: " + message);
    }
}

// 实现被观察者接口
class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();

    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        ConcreteSubject subject = new ConcreteSubject();

        Observer observer1 = new ConcreteObserver("Observer1");
        subject.registerObserver(observer1);

        Observer observer2 = new ConcreteObserver("Observer2");
        subject.registerObserver(observer2);

        subject.notifyObservers("Hello, world!");
    }
}

上記のコードを実行すると、出力結果は次のようになります。

Observer1 received message: Hello, world!
Observer2 received message: Hello, world!

観察者が通知を送ると、観察者は適切なメッセージを受け取っていることが確認できます。

bannerAds