2

私はHead First Design Patterns bookのすべての例に従っています。その章の最初のセクションに含まれている基本的な (汚い例 (手作り)) は、C# で簡単に実装できます (Java コード例から)。見てみな:

正常に動作しています。ここで私の質問は、 C#の Java からObservableクラスとObserverインターフェイスに相当する組み込みの int があるかどうかについてです。この画像を参照してください(Head First Design Patterns から取得)

その実装を行うために、さまざまなチュートリアル、ガイド、およびその他のリソースを試しました。

よろしく、ジョン・オーティス

4

2 に答える 2

2

オブザーバーパターンはまさにその...パターンです。Javaの場合と同じように、C#でクラスとインターフェイスを使用してパターンを実装できます。

http://www.fatagnus.com/the-observer-pattern-in-csharp/

あなたの質問に答えるために、いいえ、Javaキーワードに相当するC#の予約キーワードはありません。そうは言っても、クラス/インターフェース/イベントでまったく同じことを行うことができます。これは、JonSkeetによるStackOverflowの優れた例です。

using System;

class Observable
{
    public event EventHandler SomethingHappened;

    public void DoSomething()
    {
        EventHandler handler = SomethingHappened;
        if (handler != null)
        {
            handler(this, EventArgs.Empty);
        }
    }
}

class Observer
{
    public void HandleEvent(object sender, EventArgs args)
    {
        Console.WriteLine("Something happened to " + sender);
    }
}

class Test
{
    static void Main()
    {
        Observable observable = new Observable();
        Observer observer = new Observer();
        observable.SomethingHappened += observer.HandleEvent;

        observable.DoSomething();
    }
}

C#オブザーバー/デリゲートでオブザーバブルの非常に単純な例

http://yoda.arachsys.com/csharp/events.html

于 2013-03-13T03:41:12.190 に答える
0

はい、.NET Framework 4 以降では、Java の Observable クラスと Observer インターフェイスに相当する組み込みのクラスがあります。ただし、どちらも IObserver と IObservable のインターフェイスであり、汎用的であるため、非常に強力です。それらの使用方法の詳細はhttps://msdn.microsoft.com/library/ee850490(v=vs.110).aspxにあります。

もちろん、これらのインターフェイスを実装する代わりに、独自に記述したり、イベント/デリゲート アプローチを使用したりすることもできます。

于 2016-05-21T11:06:22.410 に答える