Observerパターンは、イベント駆動型モデルとどのように異なりますか?
-
03-07-2019 - |
質問
私は上級レベルの開発者ですが、正式なトレーニングはあまり受けていません。多くのデザインパターンを使用し、開発者としての私の年にそれらを使用しましたが、 。 "ああ、これはオブザーバーパターン、またはこれはシングルトンパターンです。"
いくつかのデザインパターンを読んで、Observerパターンに出会いました。これは、.NETフレームワークイベントの動作に非常に似ているようです。これに関する基本的な何かが欠けていますか?
解決
.NETイベントモデルは、共通言語ランタイムのオブザーバーパターンの統合された実装です。 .NET言語は、フレームワークの組み込みサポートを使用して、オブザーバーを言語固有の方法で直接実装します。
ほとんどのプログラミング言語では、オブザーバーパターンにはカスタマイズされた開発またはライブラリが必要です。
C#、VB.NET、およびCLRを使用するために作成された他のほとんどの言語の一部として無料で提供されます。
他のヒント
お馴染みの人 FCLで公開されるタイプの IObserver、IObservable、 またはObservableImplタイプは 枠組み。の主な理由 彼らの不在は、CLR ファッションの後にそれらを時代遅れにします。 確かにこれらを使用できますが .NETアプリケーションで構築し、 デリゲートとイベントの紹介 の新しい強力な手段を提供します Observerパターンの実装 特定のタイプを開発せずに このパターンをサポートすることに専念しています。に 実際、デリゲートとイベントは CLRのファーストクラスメンバー、 このパターンの基礎は のコアに組み込まれています 。ネットフレームワーク。そのため、FCLは Observerパターンの広範な使用 その構造全体。
Java 1.1以降のような多くのイベントモデル、および.NETイベントモデルは、基本的にObserverパターンの実装です。
これは、イベント処理のためにCでコールバックメソッドを使用するなど、古いメカニズムにも適用されることに注意してください。意図は同じですが、実装方法が少し異なります。
なぜ違いがあるに違いないと思うのですか?
.NETデザイナーはデザインパターンも読むと思いませんか?
実際、Observerパターンは(本のすべてのように)Gof4によって分類され命名されるずっと前からよく知られていました。 .Netイベントモデル、およびWin32&の実装に使用されました。 Win16イベントモデル、およびおそらく他の多くのモデル。