栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

观察者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

观察者模式

观察者模式
观察者模式中主要包括两个角色,一个是主题,另一个是观察者。
其中主题用于存放数据、修改数据、观察者注册、观察者移除、通知观察者。
观察者用于从主题中获取新的数据、并将数据进行处理(显示、计算等等)

与订阅报纸类似,报社是主题、,每天都有新的数据信息更新,并且将新的信息通知给观察者(向报社订阅的人)。同时,每个人都可以称为订阅者、或者取消订阅。
由以上描述可知,观察者模式是一对多的关系。

每个具体主题需要实现主题,每个观察者也需要实现观察者接口。具体代码如下:

public interface Subject{
	registerObsevers(Obsever obsever);
	removeObsever(Obsever obsever);
	notifyObsever();
}
public interface Obsever{
	update();
}

以上是主题与观察者接口。以《Head First 设计模式》中气象数据显示的例子为例。具体代码为:

public WebData implements Subject{
	private List obs;
	private int tem;//湿度
	private int data;//其余数据
	public WebData(){
		this.obs = new List<>();
	}
	registerObsevers(Obsever obsever){
		this,obs.add(obsever);
	}
	removeObsever(Obsever obsever){
	 obs.remove(obsever);
	 }
	notifyObsever(){
		for (Obsever o : obs){
			o.update();}
	}
	//以下还有一些数据更新等等的代码,在此不细写
	public void dataUpda(){
		。。。。//data更新等等
		notifyObsever();
	};
}

//观察者代码
public OneObsever implements Obsever{
	private WebData sub;
	private data;
	public OneObsever(WebData webData){
		this.WebData = webData;
	}
	public update(){
	 	this,data = sub.getData();//获得具体观察者类中需要的数据
	 	display(data);//对获取的数据进行相应的处理
	}
	public display();//实现对具体数据进行处理,具体代码不实现
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号