using System.Collections.Generic; namespace WindowsFormsApp1.OP { /// /// Owns some important state and notifies observers when the state changes. /// public class Subject : ISubject { private protected List> _observers = null; private object state { get;set; } public Subject() { _observers = new List>(); } public virtual void Subscribe(IObserver observer) { _observers.Add(observer); } public virtual void Unsubscribe(IObserver observer) { _observers.Remove(observer); } public void Notify() { foreach (IObserver observer in _observers) { observer.Update(this); } } public virtual void SetState(T state) { this.state = state; Notify(); } public virtual T GetState() { return (T)state; } } }