- using System;
- namespace Observer
- {
- public class Cat
- {
- public string name { get; set; }
- public Cat(string _name)
- {
- this.name = _name;
- }
- public event Action CatchMouse;// 这里使用事件而非委托, 是因为防止事件在类的外部触发.
- public void StartCatch()
- {
- Console.WriteLine("我是 {0}, 我正在抓老鼠.",name);
- if (CatchMouse != null)
- {
- CatchMouse();
- }
- }
- }
- }
cat 类
- using System;
- namespace Observer
- {
- public class Mouse
- {
- public string name { get; set; }
- public Mouse(string _name, Cat cat)
- {
- this.name = _name;
- cat.CatchMouse += StartRunAway;
- }
- public void StartRunAway()
- {
- Console.WriteLine("我是 {0}, 我正在逃跑!", name);
- }
- }
- }
- mouse
- using System;
- namespace Observer
- {
- class Program
- {
- static void Main(string[] args)
- {
- Cat cat = new Cat("kate");
- Mouse mouse = new Mouse("suke", cat);
- Mouse mouse1 = new Mouse("beita", cat);
- cat.StartCatch();
- Console.ReadKey();
- }
- }
- }
Main 函数
观察者模式
来源: http://www.bubuko.com/infodetail-2947547.html