ホームページ  >  記事  >  Java  >  Java デザイン パターン オブザーバー パターンの詳細

Java デザイン パターン オブザーバー パターンの詳細

WBOY
WBOYオリジナル
2024-05-09 14:24:02386ブラウズ

Observer パターンは、オブジェクトがイベント通知をサブスクライブし、イベントが発生したときに自動的に応答できるようにする設計パターンです。 Java では、通常、Observable (Subject) および Observer (Observer) インターフェイスを使用して実装されます。サブジェクトはオブザーバーのコレクションを維持し、変更が発生したときにオブザーバーに通知します。 Observer パターンには、疎結合、スケーラビリティ、効率的な通知という利点があり、イベント駆動型プログラミング、GUI 更新、Pub/Sub システムなどのシナリオで広く使用されています。

Java设计模式之观察者模式深 dive

Java デザイン パターンにおける Observer パターンの詳細な分析

はじめに

Observer パターンは、オブジェクトがイベント通知をサブスクライブして、イベントが発生したときに自動的に応答できるようにするデザイン パターンです。このようにして、オブザーバーは明示的にポーリングせずにトピックまたはパブリッシャーから更新を受け取ることができます。

実装方法

Java のオブザーバー パターンは通常、次のインターフェイスを使用します:

  • Observable (テーマ): オブザーバーの登録、登録解除、および通知のメソッドを定義します。 Observable(主题):定义了观察者注册、取消注册和通知的方法。
  • Observer(观察者):定义了更新方法,该方法将在被观察的对象发生更改时被调用。

在实际应用中,主题通常实现 Observable 接口,而观察者实现 Observer 接口。主题维护观察者的集合,并通过调用观察者的 update

Observer (オブザーバー): 監視対象のオブジェクトが変更されたときに呼び出される更新メソッドを定義します。

実際のアプリケーションでは、通常、サブジェクトは Observable インターフェイスを実装し、オブザーバーは Observer インターフェイスを実装します。サブジェクトはオブザーバーのコレクションを維持し、オブザーバーの update メソッドを呼び出してオブザーバーに通知します。

実際のケース

株価をリアルタイムで監視する必要がある株式市場アプリケーションがあると仮定します。オブザーバー パターンを使用して、この機能を実現できます。

トピック: 株式

public class Stock implements Observable {

    private List<Observer> observers;
    private double price;

    public Stock() {
        observers = new ArrayList<>();
    }

    @Override
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void deleteObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(this);
        }
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
        notifyObservers();
    }
}

オブザーバー: 株価モニター

public class StockPriceDisplay implements Observer {

    private Stock stock;

    public StockPriceDisplay(Stock stock) {
        this.stock = stock;
        stock.addObserver(this);
    }

    @Override
    public void update(Observable observable) {
        double price = stock.getPrice();
        System.out.println("Current stock price: " + price);
    }
}

使用例

使用例では、株式オブジェクトを作成し、その価格を監視するオブザーバーを登録します:

Stock stock = new Stock();
StockPriceDisplay display = new StockPriceDisplay(stock);

// 设置股票价格,这将自动触发观察者更新
stock.setPrice(100.0);

利点
  • オブザーバー パターンにはいくつかの利点があります:
  • 疎結合: オブザーバーとサブジェクト間の通信は疎結合であるため、相互に影響を与えることなく変更を行うことができます。
  • 拡張性: テーマの実装を変更せずに、オブザーバーを簡単に追加および削除できます。

通知効率: トピックが変更されると、オブザーバー パターンは更新をすべてのサブスクライバーに効率的に伝播します。

アプリケーション シナリオ
  • オブザーバー モードは、次のようなさまざまなシナリオで広く使用されています。

以上がJava デザイン パターン オブザーバー パターンの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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