C# |オブザーバーパターンを理解する

王林
リリース: 2024-07-23 20:44:15
オリジナル
1196 人が閲覧しました

C# | Understanding the Observer Pattern

Note
You can check other posts on my personal website: https://hbolajraf.net

オブザーバー パターンは、サブジェクトとして知られるオブジェクトが、オブザーバーと呼ばれるその依存関係のリストを維持し、通常はメソッドの 1 つを呼び出すことによって、状態の変更をオブザーバーに通知する動作設計パターンです。このパターンは、観察者がお互いではなく対象のみを認識するため、オブジェクト間の疎結合を促進します。 C# では、このパターンはイベント駆動型プログラミングでよく使用されます。

実装

C# の詳細な例を通じて、Observer パターンを理解しましょう。

主題インターフェース

まず、サブジェクトのインターフェースを定義します。このインターフェースには、オブザーバーの登録、登録解除、通知を行うためのメソッドが含まれます。

public interface ISubject
{
    void RegisterObserver(IObserver observer);
    void UnregisterObserver(IObserver observer);
    void NotifyObservers();
}
ログイン後にコピー

オブザーバーインターフェース

次に、オブザーバーのインターフェースを定義します。このインターフェースには、オブザーバーに通知する必要があるときにサブジェクトが呼び出すメソッドが含まれます。

public interface IObserver
{
    void Update();
}
ログイン後にコピー

具体的な主題

次に、ISubject インターフェイスを実装する具体的なサブジェクト クラスを実装しましょう。

public class ConcreteSubject : ISubject
{
    private List<IObserver> observers = new List<IObserver>();

    public void RegisterObserver(IObserver observer)
    {
        observers.Add(observer);
    }

    public void UnregisterObserver(IObserver observer)
    {
        observers.Remove(observer);
    }

    public void NotifyObservers()
    {
        foreach (var observer in observers)
        {
            observer.Update();
        }
    }
}
ログイン後にコピー

コンクリートオブザーバー

次に、IObserver インターフェイスを実装する具体的なオブザーバー クラスを実装しましょう。

public class ConcreteObserver : IObserver
{
    public void Update()
    {
        Console.WriteLine("Observer notified of state change.");
    }
}
ログイン後にコピー

使用例

それでは、これらのクラスをどのように組み合わせて使用​​できるかを見てみましょう。

class Program
{
    static void Main(string[] args)
    {
        ConcreteSubject subject = new ConcreteSubject();
        ConcreteObserver observer1 = new ConcreteObserver();
        ConcreteObserver observer2 = new ConcreteObserver();

        subject.RegisterObserver(observer1);
        subject.RegisterObserver(observer2);

        subject.NotifyObservers();

        subject.UnregisterObserver(observer1);

        subject.NotifyObservers();
    }
}
ログイン後にコピー

この例では、ConcreteSubject がサブジェクトで、ConcreteObserver がオブザーバーです。 NotifyObservers() が呼び出されると、両方のオブザーバーに状態の変更が通知されます。 1 人のオブザーバーの登録を解除すると、残りのオブザーバーのみに通知されます。

次は何?

オブザーバー パターンは、C# でオブジェクト間の通信を実装する強力な方法です。これは疎結合を促進し、イベント駆動型アーキテクチャで特に役立ちます。このパターンを理解して実装することで、より保守しやすくスケーラブルなコードを作成できます。

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

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート