码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的观察者模式

时间:2015-10-31 06:55:37      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:java

Observer接口

这个接口定义了一个update()方法,当被观察者对象的状态发生变化时,这个方法就会被调用。这个方法的实现类应当调用每一个被观察者对象的notifyObservers()方法,从而通知所有的观察对象。

Observable类

被观察者类都是java.util.Observable类的子类。
这个类主要提供下面几个方法:
setChanged() - 被调用之后会设置一个内部标记变量,代表被观察者对象的状态发生了变化。
notifyObservers() - 被调用时,会调用所有登记过的观察者对象的update()方法,使这些观察者对象可以更新自己。
addObserver() - 添加观察者对象。

例子

事件被观察者

import java.util.Observable;

public class EventObservable extends Observable {
    private String name = null;

    public EventObservable(String name) {
        this.name = name;
    }

    public void doSomeChanges() {
        this.setChanged();
        this.notifyObservers(System.currentTimeMillis());
    }

    @Override
    public String toString() {
        return this.name;
    }
}

事件观察者

import java.util.Observable;
import java.util.Observer;

public class EventObserver implements Observer {
    private String name = null;

    public EventObserver(String name) {
        this.name = name;
    }

    @Override
    public void update(Observable o, Object arg) {
        EventObservable eventObservable = (EventObservable) o;
        System.out.printf("%s, %s, %s \n", this.name, eventObservable, arg);
    }

    @Override
    public String toString() {
        return this.name;
    }
}

测试



public class Test {
    public static void main(String[] args) throws Exception {
        EventObservable eventObservable = new EventObservable("My Event Observer");
        eventObservable.addObserver(new EventObserver("Event Observer 1"));
        eventObservable.addObserver(new EventObserver("Event Observer 2"));
        eventObservable.doSomeChanges();
        eventObservable.doSomeChanges();
        eventObservable.doSomeChanges();
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中的观察者模式

标签:java

原文地址:http://blog.csdn.net/kongxx/article/details/49516829

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!