Java对观察者模式的支持

在Java语言的Java.util库里面,提供了一个observable类以及一个observer接口,构成Java语言对观察者模式的支持。

下面直接看如何使用Java对观察者模式的支持:

在下面的例子里,被观察者对象叫做watched,也就是被监视着;而观察者对象叫做watcher,也就是监视人的意思。

watched对象继承自observable类,而watcher对象实现了observer接口。

/**
 * 被监视着对象
 */
public class Watched extends Observable
{
    private String data="";
    /*
    * 取值方法
    * */
    public String retrieveData()
    {
        return data;
    }
    /*
    * 改值方法
    * */
    public void changeData(String data)
    {
        if(!this.data.equals(data))
        {
            this.data=data;
            setChanged();
        }
        notifyObservers();
    }
/**
 * 监视着
 */
public class Watcher implements Observer
{
    public Watcher(Watched w)
    {
        w.addObserver(this);
    }
    @Override
    public void update(Observable o, Object arg) {
        System.out.println("Data has been changed to:‘"+((Watched)o).retrieveData()+"‘");
    }
}
public class Tester
{
    private static Watched watched;
    private static Observer watcher;

    public static void main(String[] args) {
        watched=new Watched();
        watcher=new Watcher(watched);
        watched.changeData("1");
        watched.changeData("1");
        watched.changeData("2");
        watched.changeData("3");
    }
}
时间: 2024-11-07 06:49:08

Java对观察者模式的支持的相关文章

Java设计模式の观察者模式(推拉模型)

目录: 一.观察者定义 二.观察者模式的结构(推模式实现) 三.推模型和拉模型(拉模式实现) 四.JAVA提供的对观察者模式的支持 五.使用JAVA对观察者模式的支持(自带推模式实现实例) 一.观察者定义 在阎宏博士的<JAVA与模式>一书中开头是这样描述观察者(Observer)模式的: 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)

设计模式总结(Java)—— 观察者模式

概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展. 观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式的别名包括发布-订阅(Publish

Java的观察者模式

在慕课网上学习了观察者模式,故做个笔记温习巩固一下http://www.imooc.com/learn/415 自己写一个经典观察者模式 观察者模式定义 定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到了通知并自动更新. 好处:统一通知,各自处理. 认识观察者(六大方面): 1.目标与观察者之间的关系(1VS1.1VSn.nVS1) 2.单向依赖(又称为订阅发布模式) 3.命名建议 ?1.目标接口的定义,建议在名称后跟Subject ?2.观察者接口的定

Java设计模式----观察者模式详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3899208.html 联系方式:[email protected] [正文] 一.观察者模式的定义: 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象.这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新.例如:GUI中的事件

Java对正则表达式的支持(一)

Java对正则表达式的支持主要体现在String.Pattern.Matcher和Scanner类. 1.Pattern.Matcher 先看一个Pattern和Matcher类使用正则表达式的例子. public class PatternTest { public static void main(String [ ] args) { String testString = "abcabcabcdefabc"; String [] regexs = new String []{&q

Java通过jni技术支持c、c++调用使用整理

最近在公司搞终端5.0,说要对c++版本sdk封装一个java版的sdk,可是团队没有搞java的,于是赶鸭子上架,临时学习几天,整了一下:感觉还挺有意思的,于是整理一下: 为什么要使用java支持对c.c++的调用? 众所周知Java语言是一门支持跨平台解释型语言:#.java通过javac编译生成生成#.class字节码,运行过程依赖java虚拟机执行字节码生成虚拟机的执行指令,最终通过虚拟机操控所在平台,完成其设计的功能:其优点很明显,支持跨平台:其缺点也很明显,执行效率底,并且不支持平台

java设计模式--观察者模式和事件监听器模式

文章转载于:http://www.java2000.net/p9452 复习设计模式,看到observer观察者模式,说法是该模式和iterator迭代器模式类似已经被整合进jdk,但是jdk提供了两种接口: 一.java.util.Observer -- 观察者接口 对应: java.util.Observable --受查者根类 二.java.util.EventListener -- 事件监听/处理接口 对应: java.util.EventObject -- 事件(状态)对象根类 研究了

java中观察者模式Observable和Observer

25.java中观察者模式Observable和Observer 如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房者都可以观察得到. 实际上以上的购房者就是观察者,他们所关注的房价就是被观察者 其中要求,被观察者需要继承Observable类,观察则需要实现Observer接口 具体实现如下 房价的实现 1 class House extends

JAVA在语言级支持多线程

进程:任务 任务并发执行是一个宏观概念,微观上是串行的. 进程的调度是有OS负责的(有的系统为独占式,有的系统为共享式,根据重要性,进程有优先级). 由OS将时间分为若干个时间片. JAVA在语言级支持多线程. 分配时间的仍然是OS. 1 package TomTexts; 2 3 public class TomTexts_21 { 4 public static void main(String args[]) 5 { 6 int data1[]={2,4,6,8,10,12}; 7 int