java实现观察者模式

  最近使用java实现了设计模式中的观察者模式,源码如下:

  

package cn.demo;

public class TestObersver {
	public static void main(String[] args) {
		Person person=new Person();		//声明被观察者
		System.err.println("person:"+person);
		person.addPersonListener(new PersonListener(){
			public void running(PersonEvent pe) {
				System.err.println("正在观察的人:"+pe.getSource());
				System.err.println("他正在跑步");
			}
		});
		person.run();
	}
}

class Person{
	private PersonListener pl;
	public void addPersonListener(PersonListener pl){
		this.pl=pl;
	}

	public void run(){
		if(pl!=null){
			pl.running(new PersonEvent(this));
		}
		System.err.println("正在跑步....");
	}
}

interface PersonListener{
	void running(PersonEvent pe);
}

class PersonEvent{
	private Object obj;
	public PersonEvent(Object obj){
		this.obj=obj;
	}
	public Object getSource(){
		return obj;
	}
}

  代码执行后为:

  

  如此,便实现了一个简单的观察者模式。

时间: 2024-10-02 06:19:00

java实现观察者模式的相关文章

Java对观察者模式的支持

在Java语言的Java.util库里面,提供了一个observable类以及一个observer接口,构成Java语言对观察者模式的支持. 下面直接看如何使用Java对观察者模式的支持: 在下面的例子里,被观察者对象叫做watched,也就是被监视着:而观察者对象叫做watcher,也就是监视人的意思. watched对象继承自observable类,而watcher对象实现了observer接口. /** * 被监视着对象 */ public class Watched extends Ob

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设计模式の观察者模式(推拉模型)

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

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里观察者模式(订阅发布模式)

创建主题(Subject)接口 创建订阅者(Observer)接口 实现主题 实现观察者 测试 总结 在公司开发项目,如果碰到一些在特定条件下触发某些逻辑操作的功能的实现基本上都是用的定时器 比如用户注册完后,发送邮件,为了防止邮件发送失败或者发送邮件比较耗时,一般也都是通过定时器去扫库里注册没有发邮件的用户数据 再比如一个订单,在改变状态后,要归档,这也是通过定时器来实现的,扫描订单的数据,通过判断状态来做相对应的处理 但这样处理的话,定时器就会越来越多,总觉得不太好 然后,从一些资讯网站上的

java之观察者模式

之前从数据库中读取数据时总是要做类似于刷新一样的操作,感觉那是个很烦的工作,不仅影响写代码的效率也会影响程序的性能.还好最近了解到观察者模式有这样的功能,不知道我有没有理解错,如果有错,还望各位大神进行纠正,好吧!话就不多说,开始干正事 1.什么是观察者模式? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改

java中观察者模式的使用场景

观察者模式 是一种非常经典 非常常用的设计模式. 一个对象的行为 依赖于 另一个对象的状态.或者换一种说法,当被观察对象(目标对象)的状态发生改变时 ,会直接影响到观察对象的行为. 特点一 : 被观察者 和观察者 一般是 一对多的关系,一个被观察者 对应多个观察者,当一个被观察者的状态发生改变时,被观察者通知观察者, 然后可以在观察者内部 进行业务逻辑的处理. JDK 提供了 一套 观察者模式的实现,在java.util包中, java.util.Observable类和java.util.Ob

java设计模式-观察者模式

定义: 使用head First 设计模式中提到的说法 观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象.这样一来,当被观察者状态发生改变时,需要通知相应的观察者,使这些观察者对象能够自动更新. 简介: 观察者模式(Observer)完美的将观察者和被观察的对象分离开.举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上. 面向对象设计的一个原则是: 系统中的每个类将重点放在某一个功能上,而不是其他方面.