1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【デザインパターン】Observer パターン vs Pub-Sub(Publish / Subscribe)

Posted at

共通点

  • どちらも「イベント通知の仕組み」
  • 複数のオブジェクトに対して通知を行える
  • 状態変化に応じた処理を実現

違い

項目 Observer パターン Pub-Sub(Publish/Subscribe)
依存関係 Subject が Observer を直接知っている(参照を保持) Publisher と Subscriber は お互いを知らない(Broker/MessageBus が仲介)
通知の仕組み Subject が Observer に 直接呼び出し Publisher がイベントを Broker に送信し、Broker が Subscriber に配信
スコープ アプリ内のオブジェクト間通知が多い 分散システムやモジュール間通信にも使える
実装の重さ 軽量(リスト管理+ループ通知) 重め(Message Queue / EventBus / Broker が必要)
代表例 Flutter: ValueNotifier, Android: LiveData Kafka, RabbitMQ, Google Pub/Sub, EventBus, RxBus

図解


Flutter / Android 実務での使い分け

  • Observer
    • Flutter の ValueNotifierValueListenableBuilder
    • Android の LiveData / Flow
    • アプリ内部の「状態変化通知」に向いている
  • Pub-Sub
    • Flutter で event_bus パッケージを利用
    • Android で EventBus(GreenRobot)や RxBus
    • モジュール間通信、疎結合なイベント配信、クロスコンポーネント連携に向いている

まとめ

  • Observer = 「Subject が Observer を直接通知」 → 軽量・アプリ内部向き
  • Pub-Sub = 「Broker が間に入って配信」 → 疎結合・モジュール/分散システム向き

Observer は「小さな範囲の通知」、Pub-Sub は「大規模・疎結合の通知」に適している。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?