123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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<IObserver> _observers = new List<IObserver>();
- 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);
- }
- }
- }
- }
|