//实现的是在手机、电脑、平板上都能够更新显示天气
abstract class Subject
{
private IList<Observer> observers = new List<Observer>();
//增加观察者
public void Attach(Observer observer)
{
observers.Add(observer);
}
//移除观察者
public void Detach(Observer observer)
{
observers.Remove(observer);
}
//通知
public void Notify()
{
foreach (Observer o in observers)
{
o.Update();
}
}
}
//具体通知者
class ConcreteSubject : Subject
{
private string subjectState;
//具体通知者状态
public string SubjectState
{
get { return subjectState; }
set { subjectState = value; }
}
}
abstract class Observer
{
public abstract void Update();
}
class ConcreteObserver : Observer
{
private string name; //观察者名称
private string observerState; //通知内容
private ConcreteSubject subject; //通知者
public ConcreteObserver(
ConcreteSubject subject, string name)
{
this.subject = subject;
this.name = name;
}
//更新
public override void Update()
{
observerState = subject.SubjectState;
Console.WriteLine("{0}的新天气状态是{1}",
name, observerState);
}
}
private void button4_Click(object sender, EventArgs e)
{
ConcreteSubject s = new ConcreteSubject();
s.Attach(new ConcreteObserver(s, "手机"));
s.Attach(new ConcreteObserver(s, "电脑"));
s.Attach(new ConcreteObserver(s, "平板"));
s.SubjectState = "晴";
s.Notify();
}