Observer Pattern 在C#是怎么使用的(一)

最近很少加班,晚上回家闲来无聊就拿起侯捷老师的《design pattern》 重读了起来。上侯捷老师的设计模式的课是差不多两年前的事了,也还记得考试的时候每个人都带着他的书放到书桌下面一顿狂抄。

但是想起上次面试时,被问到设计模式的问题,真的是一点印象没有了,所以迷迷糊糊答了过去。现在才想着重新捡起来。

回到正题,Observer Pattern(观察者模式) 到底是什么意思。它在实际项目中到底有什么用呢。

在侯捷老师的书里,是这么定义Observer Pattern的:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

在objects 之間定義"一對多" 依存性,使得當object 改變狀態時,它所依存的所有objects 都會獲得通知並自動更新。

注意automatically这个词,所有依存于这个对象的对象都会自动更新。我觉得这就是我想要的。在我所写的项目中,有一个listview需要实时显示一个list的所有内容,我开始想的是用线程来每间隔一段时间遍历一次这个list,把数据给listview。但是难点在于listview是属于FormMain下的成员,而我要在其他类里面操作这个listview,所以就要在FormMain下定义一个Listview的全局变量。但是我这么做之后发现会报空指针的错误,就是提示在引用之前要先确定该成员是否已经实例化。后来我干脆想着是不是把FormMain也实例化成一个全局变量,这样我就能够操作里面的listview了。这样是没错的,但是这样的话,两个类之间的偶合就会加大,对于后续的修改会很难。

这时候我遇到了让我眼前一亮的Observer Pattern。 我想这正是我想要的。至于具体的使用方法,我会在第二篇中给出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值