using System;
using System.Collections.Generic;
using System.Text;
namespace Design20
{
abstract class Vender
{
private IList<Observer> observers = new List<Observer>();
// 观察者注册
public void Register(Observer observer)
{
observers.Add(observer);
}
//通知
public void Notify()
{
foreach (Observer o in observers)
{
o.Update();
}
}
}
//具体通知者
class YiXun : Vender
{
private string subjecPhone;
private string subjecLaptop;
//具体通知者状态
public string SubjecPhone
{
get { return subjecPhone; }
set { subjecPhone = value; }
}
//具体通知者状态
public string SubjecLaptop
{
get { return subjecLaptop; }
set { subjecLaptop = value; }
}
}
abstract class Observer
{
public abstract void Update();
}
class CustomerA : Observer
{
private YiXun subject;
public CustomerA(
YiXun subject)
{
this.subject = subject;
}
//更新
public override void Update()
{
Console.WriteLine("消费者A查看到的是{0}", this.subject.SubjecPhone);
}
public YiXun Subject
{
get { return subject; }
set { subject = value; }
}
}
class CustomerB : Observer
{
private YiXun subject;
public CustomerB(
YiXun subject)
{
this.subject = subject;
}
//更新
public override void Update()
{
Console.WriteLine("消费者B查看到的是{0}", this.subject.SubjecLaptop);
}
public YiXun Subject
{
get { return subject; }
set { subject = value; }
}
}
class Program
{
static void Main(string[] args)
{
YiXun subject = new YiXun();
subject.Register(new CustomerA(subject));
subject.Register(new CustomerB(subject));
// 来了新手机和新笔记本电脑,然后通知到所有注册的消费者.
// 然后消费者去查看自己感兴趣的产品有哪些.
subject.SubjecPhone = "IPhone5s";
subject.SubjecLaptop = "ThinkPad";
subject.Notify();
Console.Read();
}
}
}