using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { /// /// 观察者模式(接口实现) /// internal class guanchazhe_jieko { // 主题接口 public interface ISubject { void RegisterObserver(IObserver observer); void RemoveObserver(IObserver observer); void NotifyObservers(); string GetState(); void SetState(string state); } // 观察者接口 public interface IObserver { void Update(string message); } // 主题类 public class ConcreteSubject : ISubject { private readonly List _observers = new List(); private string _subjectState; public void RegisterObserver(IObserver observer) { _observers.Add(observer); } public void RemoveObserver(IObserver observer) { _observers.Remove(observer); } public void NotifyObservers() { foreach (var observer in _observers) { observer.Update(_subjectState); } } // 主题状态的设置和获取方法 public string GetState() { return _subjectState; } public void SetState(string state) { _subjectState = state; } } // 观察者类 public class ConcreteObserver : IObserver { private string _name; private string _observerState; public ConcreteObserver(string name) { this._name = name; } public void Update(string message) { _observerState = message; Console.WriteLine("Observer {0} received message: {1}", _name, _observerState); } } } }