JAVA中的观察者模式observer
简介:
在java.util包下,
观察者继承observable类,设置变化点setChanged();通知改变的内容notifyObservers();
被观察者继承observer接口,覆写uodate方法
要点:Observer中的update方法中的变量含义
代码:被观察者房子House类
package observer_java;
import java.util.Observable;
/*** 被观察者需要继承Observable类* @author LCM**/
public class House extends Observable{private String houseName;public String getHouseName() {return houseName;}public House(String houseName, double price) {super();this.houseName = houseName;this.price = price;}public House() {super();}public void setHouseName(String houseName) {this.houseName = houseName;}private double price;public double getPrice() {return price;}public void setPrice(double price) {this.setChanged();//设置变化点this.notifyObservers(price);//通知所有观察者改变价格this.price = price;}@Overridepublic String toString(){return this.getHouseName()+"的价格是:"+this.getPrice();}
}
代码二:观察者购房者HouseObserve
package observer_java;
import java.util.Observable;
import java.util.Observer;
/*** 观察者需要集成接口observer* @author LCM**/
public class HouseObserver implements Observer{private String name;public HouseObserver() {super();}public HouseObserver(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
/**覆写update方法,实现观察者的方式
*update(Obervable o,Object arg)中的o是原来的对象,还未改变的,arg是改**变的变量
*/public void update(Observable o, Object arg) {// TODO Auto-generated method stubHouse h=(House)o;System.out.println("房子原来的价格是"+h.getPrice());System.out.println(this.getName()+"发现房子价格变化:"+arg);}public static void main(String args[]){House newHouse=new House("Bluse Lee",3000);HouseObserver observer1=new HouseObserver("observer1");HouseObserver observer2=new HouseObserver("observer2");HouseObserver observer3=new HouseObserver("observer3");newHouse.addObserver(observer1);newHouse.addObserver(observer2);newHouse.addObserver(observer3);System.out.println(newHouse);newHouse.setPrice(5000);System.out.println(newHouse);}
}
//Bluse Lee的价格是:3000.0
//observer3发现房子价格变化:Bluse Lee的价格是:3000.0
//observer2发现房子价格变化:Bluse Lee的价格是:3000.0
//observer1发现房子价格变化:Bluse Lee的价格是:3000.0
//Bluse Lee的价格是:5000.0
//错误分析:update(Obervable o,Object arg)中的o是原来的对象,还未改变的,arg是改变的变量
转载于:https://blog.51cto.com/chanir/1220294
JAVA中的观察者模式observer相关推荐
- java中线程观察者模式_设计模式之--观察者模式
在日常生活中,有很多需要我们关注的事务(比如,股市,楼市等),这些事务我们可以称之为主题或者叫信息发布者,观察主题的目的是想了解主题的变化(消息).一种方法当然是采用盯人策略,但这种方法有个固有的缺点 ...
- Java中的观察者模式
2019独角兽企业重金招聘Python工程师标准>>> 1.相关类介绍 public class Observable extends Object 此类表示模型视图范例中的 obs ...
- 设计模式:java及spring观察者模式(有利于代码解耦)
http://www.cnblogs.com/softidea/p/5716870.html 什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文 ...
- Java中使用Observer接口和Observable类实践Observer观察者模式
在Java中通过Observable类和Observer接口实现了观察者模式.实现Observer接口的对象是观察者,继承Observable的对象是被观察者. 1. 实现观察者模式 实现观察者模式非 ...
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- java观察者模式在spring中的应用_Spring源码之spring中的观察者模式和监听器的使用...
声明:本文根据鲁班学院子路老师spring中观察者模式课程整理得来 观察者模式特点: 被观察者持有监听的观察者的引用. 被观察者支持增加和删除的观察者. 被观察者状态改变通知观察者. JDK中观察者i ...
- java观察者模式在spring中的应用_在Spring中使用观察者模式
菜鸟教程中关于观察者模式的介绍如下: 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 主要解决:一个对象状态改变给其他对象通知的问题,而 ...
- 设计模式-观察者模式(Observer)-Java
设计模式-观察者模式(Observer)-Java 目录 文章目录 1.前言 2.示例案例-多人联机对战游戏的设计 3.观察者模式概述 3.1.观察者模式定义 3.2.观察者模式结构 3.3.观察者模 ...
- 设计模式 - 观察者模式(Observer Pattern) Java内置 用法
观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ...
最新文章
- 鸡肋的PHP单例模式
- vue在created调用点击方法_vue中created、mounted等方法整理
- databasemetadata获取表注释_宏基因组测序中短序列的注释
- Taylor Swift -《Fearless》
- CodeForces - 1509C The Sports Festival(dp)
- 用PL/SQL Develpoer工具完成导入和导出
- 利用c语言建立交易系统,【图】手把手教会你构建自己的交易系统 - 4_股票论坛,炒股公式,股票指标,股票公式,选股公式_数据、教程交流论坛_理想论坛 - 股票论坛...
- ExecuteNonQuery()方法发即:是指执行非查询SQL命令,如:增、删、改等
- js 高级-创建对象
- Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
- Oracle补习班第五天
- 个人主页 — github + jekyll 搭建自己的个人主页
- Prometheus监控系统+Grafana可视化工具搭建
- 单片机c语言中的精确延时程序,单片机精确毫秒延时函数
- android修改屏幕比例,安卓屏幕比例修改器
- ZoomKeeper
- 如何在国内开设美元账户进行美元投资?
- 基于stm32的智能药盒
- win7开机蓝屏提示STOP:0X0000007B的解决方法
- 我的 卡特尔16pf