Observable与Observer物件

这一阵子为了解决Java视窗的设计,重新翻阅了Java 2教学手册-JDK 5上的模型-观点-控制(MVC)架构,然后读到了之前忽略掉的文件/观点结构,这在第十五章有介绍,不过ㄚ琪读完,实作完程式后,还是留有很多的模糊感觉,只好继续搜寻相关的教学。

[adsense]

在昆山科大资管系的游峰硕老师个人网页中,他有教授 物件导向设计,有这样一个主题:

行为样式

  1. Observer 样式。简单的范例
    一个使用Observer样式撰写的弹跳球例子: 弹跳球

这里头的Observer的定义是这样:

Observer样式定义了一种一对多的依赖关系。让多个观察者物件同时监听某一个主题物件(subject)。当subject发生变化时,会通知所有观察者物件,使它们能够自动更新自己。

从AWT1.1开始,Java视窗系统的事件模型(event model)都采用Observer样式。
Java本身就有定义Observer介面。所以我们可以直接使用它,不需要再定义。任何实作此介面的类别都是一个观察者的角色。

从这一段看到了,原来Java的视窗是用这样的模式,并不是MVC的架构,也难怪Java 2教学手册-JDK 5会在建立视窗这一章提到,不过ㄚ琪那时读来并不懂。

另外提到了java.util.Observable类别就是样式中提到的subject。也就是被观察者。这个类别提供了许多有关管理观察者的方法,以及通知(notify)观察者的机制等等。

机制是这样:

程式要自学真的很累,如果有好的书或是好的教师教,真的就有如神助了。