观察者模式

 public class Subject
    {
        List<Observer> observers = new List<Observer>();

        public void Attach(Observer o)
        {
            observers.Add(o);
        }

        public void Detach(Observer o)
        {
            observers.Remove(o);
        }

        public void NotifyObservers()
        {
            foreach (Observer observer in observers)
            {
                observer.Update(this);
            }
        }

    }

    public class ConcreteSubject : Subject
    {
        private string _subjectstate;

        public string GetSubjectState()
        {
            return _subjectstate;
        }

        public void SetSubjectState(string substate)
        {
            this._subjectstate = substate;
            NotifyObservers();
        }
    }

    public interface Observer
    {
         void Update(Subject sub);
    }
    public class ConcreteObserver : Observer
    {
        private string ObserverState;

        void Observer.Update(Subject sub)
        {
            ObserverState = ((ConcreteSubject)sub).GetSubjectState();
        }
    }

调用

 static void Main(string[] args)
        {
            ConcreteObserver observer1 = new ConcreteObserver();
            ConcreteObserver observer2 = new ConcreteObserver();
            ConcreteObserver observer3 = new ConcreteObserver();

            ConcreteSubject sub = new ConcreteSubject();
            sub.Attach(observer1);
            sub.Attach(observer2);
            sub.Attach(observer3);

            sub.SetSubjectState("123");

        }
原文地址:https://www.cnblogs.com/anbylau2130/p/3466843.html