【设计模式】——观察者
2017-05-14 21:40
176 查看
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。生活中的例子,就是Foxmail订阅和邮件订阅等情况。
观察者模式提供了一种对象设计,让主题和观察者之间松耦合。
观察者与主题之间依赖于接口,主题不需要知道观察者的具体实现
可以动态添加删除观察者,对主题没有任何影响
新增新类型的观察者对主题没有影响,主题的代码不需要修改,而且旧的观察者也不受影响
观察者与主题都可以独立复用,因为是松耦合
只要约定的接口不改变,修改主题或观察者任何一方,都不会影响另一方
static void Main(string[] args)
{
//老板胡汉三
Boss huhansan = new Boss();
//看股票的同事
StockObserver tongshi1 = new StockObserver("魏冠超", huhansan);
//看NBA的同事
NBAObserver tongshi2 = new NBAObserver("易冠茶", huhansan);
huhansan.Attach(tongshi1);
huhansan.Attach(tongshi2);
huhansan.Detach(tongshi1);
//老板回来
huhansan.SubjectState = "我胡汉三回来了";
//发出通知
huhansan.Notify();
}
观察者模式提供了一种对象设计,让主题和观察者之间松耦合。
观察者与主题之间依赖于接口,主题不需要知道观察者的具体实现
可以动态添加删除观察者,对主题没有任何影响
新增新类型的观察者对主题没有影响,主题的代码不需要修改,而且旧的观察者也不受影响
观察者与主题都可以独立复用,因为是松耦合
只要约定的接口不改变,修改主题或观察者任何一方,都不会影响另一方
static void Main(string[] args)
{
//老板胡汉三
Boss huhansan = new Boss();
//看股票的同事
StockObserver tongshi1 = new StockObserver("魏冠超", huhansan);
//看NBA的同事
NBAObserver tongshi2 = new NBAObserver("易冠茶", huhansan);
huhansan.Attach(tongshi1);
huhansan.Attach(tongshi2);
huhansan.Detach(tongshi1);
//老板回来
huhansan.SubjectState = "我胡汉三回来了";
//发出通知
huhansan.Notify();
}
相关文章推荐
- java设计模式——观察者模式
- 设计模式(1)----观察者
- C++设计模式——观察者模式
- Java设计模式——观察者模式
- 设计模式 - 观察者模式
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- java设计模式观察者模式
- 设计模式之--观察者模式(解决、解耦的钥匙)
- PHP设计模式系列(九):观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- php设计模式-观察者模式
- 利用 SPL 快速实现 观察者设计模式
- 07.C语言和设计模式(观察者模式)
- C#设计模式观察者
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式系列--观察者模式基本
- 设计模式---观察者模式