1. ホーム
  2. design-patterns

[解決済み] Observerデザインパターンと "Listeners "の比較

2022-04-27 12:26:53

質問

GOFで説明されているObserverデザインパターンは、様々なツールキットで見られるListenersと本当に同じものであるように思えます。概念に違いがあるのでしょうか、それともListenersとObserverは本当に同じものなのでしょうか。

(具体的なコンピュータ言語での実装は求めておらず、設計の観点から違いを(もしあれば)理解したいだけです)。そう、SOFに似たような質問に対する回答がいくつかあるのは知っていますが、それらは特定の言語に関する特定の質問に根ざしています -- 私は言語の答えではなく、デザインの答えを探しているのです)

解決するには?

リスナーという用語がObserverパターンを指すかどうかは、文脈によって異なります。 例えば、Java Swing の "Event Listeners" は Observer パターン実装の一部であり、.Net の "Trace Listeners" はそうではありません。

フレームワークの作者が、あるパターンの実装に参加するコンポーネントに異なる名前を付けることは珍しくありませんが、パターンそのものを論じるときには、一般に公式のパターン名が使われます。

デザインに関しては、あるパターンの実装が、使用する言語やプラットフォームに影響されることがよくあります。 そのため、あるフレームワークにおけるObserverパターンの特定の実装(たまたまConcreteObserverの役割を説明するためにリスナーという用語を使うかもしれません)は、デザインパターン集で説明されているものとは若干異なるかもしれません。