当前位置:主页 > 网页教程 > 网络编程 > Java教程 > 内容欢迎大家投稿

Java与模式 观察者模式Observer Pattern

时间:2009-10-11 21:09来源:未知 作者:大宝库 点击:读取中
阅读工具:字体:

观察者模式又叫作发布-订阅模式(publish-subscribe),模型-视图(model-view)模式,源-监听者(source-listener)模式,或者从属者(dependents)模观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生改变时,会通知所有的观察者对象,使他们能够自动更新自己。

实现类图:

 

Java提供了观察者模式的相关类:

java.util.observer

java.util.observable

应用类图如下:

 

其中需要用户自己实现Watched类和Watcher类。

Client应用代码如下:

 

public class Client

{

static private Watched watched;

static private Observer watcher;

 

    public static void main(String[] args)

    {

watched = new Watched();

 

        watcher = new Watcher(watched);

 

        watched.changeData("In C, we create bugs.");

        watched.changeData("In Java, we inherit bugs.");

        watched.changeData("In Java, we inherit bugs.");

        watched.changeData("In Visual Basic, we visualize bugs.");

    }

}

 

大家要注意,观察者模式是给观察对象设置观察者,而不是给观察者设定观察对象。故观察对象中需要有个Container存放观察者。但是上面应用为什么在构造观察者时给了一个观察对象参数呢?而不是把观察者作为参数赋给观察对象?

watcher = new Watcher(watched);

实际上你也可以构造一个没有参数的观察者,然后把这个观察者加入观察对象中。addObserver(o:Observer)

这里用了一个的编程技巧,在观察者的构造方法中调用了此方法。

(责任编辑:大宝库)


------分隔线----------------------------
推荐内容
  • Java新手入门很重要的几个基本概念

    final类:为防止他人从你的类上派生新类,此类是不可扩展的。 动态调用比静态调用花费...

  • Java主要特性

    1、Java语言是简单的 。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容...

  • Java语言特点

    Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植...

  • 什么是Java?

    Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言...

  • 编写高效Java代码 java.lang.String类和java.

    养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.uti...

赞助商链接
赞助商链接