using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 观察者模式
{
class Program
{
static void Main(string[] args)
{
看NBA的同事 zhangSan = new 看NBA的同事() { Name = "张三" };
看NBA的同事 li = new 看NBA的同事()
{
Name = "李四"
};
看NBA的同事 ww = new 看NBA的同事() { Name = "王五" };
打游戏 xiaoWu = new 打游戏() { Name = "小五" };
老板 xiaoLi = new 老板();
xiaoLi.注册(zhangSan);
xiaoLi.注册(li);
xiaoLi.注册(ww);
xiaoLi.注册(xiaoWu);
xiaoLi.取消注册(li);
xiaoLi.通知();
Console.ReadLine();
}
}
public abstract class 被观察者
{
public List<观察者> list = new List<观察者>();
public abstract void 注册(观察者 ts);
public abstract void 取消注册(观察者 ts);
public abstract void 通知();
}
public class 前台 : 被观察者
{
public override void 注册(观察者 ts)
{
list.Add(ts);
}
public override void 取消注册(观察者 ts)
{
list.Remove(ts);
}
public override void 通知()
{
Console.WriteLine("老板来了....");
foreach (观察者 item in list)
{
item.更新();
}
}
}
public class 老板 : 被观察者
{
public override void 注册(观察者 ts)
{
list.Add(ts);
}
public override void 取消注册(观察者 ts)
{
list.Remove(ts);
}
public override void 通知()
{
Console.WriteLine("同志们,我回来了....");
foreach (观察者 item in list)
{
item.更新();
}
}
}
public abstract class 观察者
{
public string Name { get; set; }
public abstract void 更新();
}
public class 看NBA的同事 : 观察者
{
public override void 更新()
{
Console.WriteLine(Name + " 关掉NBA,开始工作......");
}
}
public class 打游戏 : 观察者
{
public override void 更新()
{
Console.WriteLine(Name + " 关掉游戏,开始工作。。。。");
}
}
}本文出自 “Mr.Zhang” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1575158
原文:http://zhangzhipeng.blog.51cto.com/9115459/1575158