C# 观察者模式 以及 delegate 和 event

观察者模式 http://mp.weixin.qq.com/s/XkfiFKPTbOy6kGGzfQOFpA

那么什么是观察者模式?
举一个例子:
1、报社发行报纸【发布者】–报社【被观察对象】
2、你订阅报纸, 一旦有新一期的报纸发行, 新报纸就会送到你家里, 只要你一直订阅, 你就一直会收到新报纸【订阅者】–【观察者】
3、你不再订阅报纸的时候, 就收不到以后的新报纸了
4、报社运营的时候, 一直会有人去订阅或者取消订阅报纸.

发布者 + 订阅者 = 观察者模式
Publishers + Subscribers = Observer Pattern
在观察者模式里, 我们把报社叫做被观察对象(Subject), 把订阅者叫做观察者(Observers)

这里写图片描述

观察者模式是这样操作的:
这里写图片描述

这里写图片描述

这里写图片描述

观察者模式的定义就是:
一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知

这里写代码片

谈一下松耦合

当两个对象是松耦合的时候, 他们可以进行交互, 但是却几乎不了解对方.
观察者模式下的被观察者(Subject)和观察者(Observers)就是松耦合设计的对象. 这是因为:
1.被观察者(Subject)只知道观察者实现了某个接口
2.可以随时添加观察者
3.添加新类型观察者的时候不需要修改被观察者
4.可以复用观察者或者被观察者
5.如果被观察者或观察者发生变化了, 那么这些变化不会影响到对方.

一个设计原则:
交互的对象之间应尽量设计成松耦合的. (Strive for loosely coupled designs between objects that interact.)
松耦合设计可以让我们设计出这样的系统: 因为对象之间的相互依存减小了, 所以系统可以轻松处理变化.

重新设计:
这里写图片描述

代码:
这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值