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);
}
}
}
}