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 サイトの他の関連記事を参照してください。