最近很少加班,晚上回家闲来无聊就拿起侯捷老师的《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。 我想这正是我想要的。至于具体的使用方法,我会在第二篇中给出。