观察者模式之Java实现方式
来源:互联网 发布:旁氏米粹 知乎 编辑:程序博客网 时间:2024/06/06 09:44
在前面我已经写了一个自己手写的观察者模式的实习,现在呢,利用java提供的观察者模式来显示,大家看懂了前面我写的,下面的代码也能够理解:
对应具体的目标对象的实现
package com.test;import java.util.Observable;/** * @author mqc * 对应具体的目标对象的实现 */public class WeatherSubject extends Observable { /** * 对应的天气的内容 */ private String content; public String getContent() { return content; } public void setContent(String content) { this.content = content; //必须要调用这个函数,不能够缺少 this.setChanged(); //通知当前定义的所有的目标对象,首先利用推模型的方式进行推送 this.notifyObservers(content); //无参数的调用方式是拉模型的方式,java进行了封装// this.notifyObservers(); }}
对应的观察者对象的定义
package com.test;import java.util.Observable;import java.util.Observer;/** * @author mqc * 对应的观察者对象的定义 */public class WeatherObserver implements Observer { /** * 当前观察者的名字 */ private String observerName; @Override public void update(Observable o, Object arg) { //首先推送的方式 System.out.println(observerName+"接收到了目标对象推送的"+arg); //然后是拉模式 System.out.println(observerName+"从目标对象拉取得到:"+((WeatherSubject)o).getContent()); } public String getObserverName() { return observerName; } public void setObserverName(String observerName) { this.observerName = observerName; }}
对应的测试代码:
package com.test;import org.junit.Test;public class TestWeather { @Test public void test(){ //首先创建对应的目标对象 WeatherSubject subject = new WeatherSubject(); //其次创建对应的观察者 WeatherObserver os1 = new WeatherObserver(); WeatherObserver os2 = new WeatherObserver(); os1.setObserverName("小明"); os2.setObserverName("小五"); //然后注册这些观察者 subject.addObserver(os1); subject.addObserver(os2); //改变目标对象的状态 subject.setContent("今天天气晴朗,温度25°"); }}
运行结果:
小五接收到了目标对象推送的今天天气晴朗,温度25°
小五从目标对象拉取得到:今天天气晴朗,温度25°
小明接收到了目标对象推送的今天天气晴朗,温度25°
小明从目标对象拉取得到:今天天气晴朗,温度25°
阅读全文
0 0
- 观察者模式之Java实现方式
- Java实现设计模式之观察者模式
- Java实现观察者模式
- Java实现观察者模式
- 观察者模式-java实现
- java实现观察者模式
- JAVA实现观察者模式
- 观察者模式(java实现)
- java实现观察者模式
- 观察者模式之通用代码(拉模型方式实现)
- Java之观察者模式
- Java之观察者模式
- Java之观察者模式
- java之观察者模式
- java之观察者模式
- java之观察者模式
- JAVA设计模式 之 观察者模式(JDK内置实现)
- 设计模式之观察者模式的Java实现
- class & dex 文件详解
- 挂号系统 V1.0(上)
- enum枚举类型
- 磁盘到底该不该分区?
- Jquery获取radio的状态
- 观察者模式之Java实现方式
- Python入门和Anaconda的安装
- eclipse设置光标文本输入提示
- 【笔记】快速排序
- Android安卓——Android程序生命周期
- sublime3,加入Package Control
- 前端学习第九弹:简易的聊天界面
- SQL Server 和 Oracle 以及 MySQL 有哪些区别?
- 去除textarea右下角的箭头(禁止拉伸)