读书人

Observer形式介绍

发布时间: 2012-06-22 16:16:32 作者: rapoo

Observer模式介绍

简单来说,Observer模式让一个对象(观察者,Observer)去监视另一个对象(目标Subject);它使得目标和观察者之间建立一种 "发布订阅"(publish-subscribe )的关系。通过Observer模式,观察者可以向目标登记,表明自己要从目标接收事件。目标需要向观察者通知事件时,只是简单地将事件发给每一个观察者。

例如:
1.有一个基于某种数据模型的电子表格。只要数据模型发生变化,电子表格就需要更新表格单元以及内嵌的图表。这个例子中,目标是数据模型,观察者是表格单元和图表。当观
察者接收到数据模型已经变化的通知时,它们就更新自己。
2.有一个小孩子在睡觉,当这个小孩子醒来的时候,他的父亲,母亲,爷爷,奶奶都要做出一系列的反应。在这个例子中,目标是这个小孩子,观察者是这些父亲,母亲,爷爷,奶奶作出的反应。当小孩子醒过来时,他们各自做出自己的反应。
3.Java的awt中,也使用了Observer模式。例如一个点击一下Button时,可以做出一些反应,可以使弹出一个对话框,关闭界面,打印出信息...
这个例子中,目标就是这个Button,观察者就是作出反应的这些事件。


Observer模式的好处是:它解除了观察者和目标之间的耦合关系。目标不需要知道它的观察者的任何信息。相反,目标只是允许观察者订阅事件。当目标产生一个事件时,它简单地将事件传给每一个观察者。

下面列出了两个小例子:
例一: 模拟awt中点击Button,监视它的事件作出反应。


例二: 当一个小孩子醒过来的时候,他的爷爷,父亲作出反应。
本例用了属性文件,将要作出反应的事件写在属性文件里,然后去读取,在执行。

2.源代码



读书人网 >编程

热点推荐