设计模式学习之观察者模式(Observer,行为型模式)(7)
2014-07-09 16:47
627 查看
1.观察者模式又叫做发布-订阅模式。
2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
3.使用观察者模式的好处:维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。
什么时候使用观察者模式:当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式。
private static void Main(string[] args) { Boss boss = new Boss(); boss.Update += new StockObserver("股票哥", boss).CloseStockMarket; boss.Update += new NBAObserver("NBA哥", boss).CloseNBADirectSeeding; boss.SubjectState = "老板回来了。。。"; boss.Notify(); } /// <summary> /// 通知者接口 /// </summary> public interface ISubject { void Notify(); string SubjectState { get; set; } } public delegate void EventHandler(); public class Boss : ISubject { public event EventHandler Update; public void Notify() { if (Update != null) { Update(); } } public string SubjectState { get; set; } } /// <summary> /// 前台秘书类 /// </summary> public class Secretary : ISubject { public event EventHandler Update; public void Notify() { if (Update != null) { Update(); } } public string SubjectState { get; set; } } /// <summary> /// 看股票的同事 /// </summary> public class StockObserver { private string name; private ISubject subject; public StockObserver(string name, ISubject subject) { this.name = name; this.subject = subject; } public void CloseStockMarket() { Console.WriteLine("{0} {1} 关闭股票行情,继续工作!", subject.SubjectState, name); } } /// <summary> /// 看NBA的同事 /// </summary> public class NBAObserver { private string name; private ISubject subject; public NBAObserver(string name, ISubject subject) { this.name = name; this.subject = subject; } public void CloseNBADirectSeeding() { Console.WriteLine("{0} {1} 关闭NBA直播,继续工作!", subject.SubjectState, name); } }
相关文章推荐
- 设计模式深入学习--Observer 观察者模式(行为型模式)
- 设计模式深入学习--Observer 观察者模式(行为型模式)
- 设计模式学习笔记(二)之观察者模式(Observer)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- C#面向对象设计模式纵横谈 学习笔记19 Observer观察者模式(行为型模式)
- 设计模式笔记--行为型模式之七Observer--观察者
- 步步为营 .NET 设计模式学习笔记 十二、Observer (观察者模式)
- 设计模式学习2——观察者模式(Observer)
- C#面向对象模式设计第十九讲:Observer 观察者模式(行为型模式)
- 设计模式学习笔记--Observer Pattern观察者模式
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式学习之二观察者模式(Observer)——参与气象观测站的设计
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
- 设计模式学习笔记(二)之观察者模式(Observer)
- 设计模式学习9 -- 观察者模式(Observer)
- 步步为营 .NET 设计模式学习笔记 十二、Observer (观察者模式)
- 设计模式C++学习笔记之十六(Observer观察者模式)
- 设计模式学习总结-观察者模式(Observer Pattern)