简介:

在java.util包下,

  1. 观察者继承observable类,设置变化点setChanged();通知改变的内容notifyObservers();

  2. 被观察者继承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相关推荐

  1. java中线程观察者模式_设计模式之--观察者模式

    在日常生活中,有很多需要我们关注的事务(比如,股市,楼市等),这些事务我们可以称之为主题或者叫信息发布者,观察主题的目的是想了解主题的变化(消息).一种方法当然是采用盯人策略,但这种方法有个固有的缺点 ...

  2. Java中的观察者模式

    2019独角兽企业重金招聘Python工程师标准>>> 1.相关类介绍 public class Observable extends Object 此类表示模型视图范例中的 obs ...

  3. 设计模式:java及spring观察者模式(有利于代码解耦)

    http://www.cnblogs.com/softidea/p/5716870.html 什么是ApplicationContext?  它是Spring的核心,Context我们通常解释为上下文 ...

  4. Java中使用Observer接口和Observable类实践Observer观察者模式

    在Java中通过Observable类和Observer接口实现了观察者模式.实现Observer接口的对象是观察者,继承Observable的对象是被观察者. 1. 实现观察者模式 实现观察者模式非 ...

  5. java设计模式--观察者模式(Observer)

    java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...

  6. java观察者模式在spring中的应用_Spring源码之spring中的观察者模式和监听器的使用...

    声明:本文根据鲁班学院子路老师spring中观察者模式课程整理得来 观察者模式特点: 被观察者持有监听的观察者的引用. 被观察者支持增加和删除的观察者. 被观察者状态改变通知观察者. JDK中观察者i ...

  7. java观察者模式在spring中的应用_在Spring中使用观察者模式

    菜鸟教程中关于观察者模式的介绍如下: 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 主要解决:一个对象状态改变给其他对象通知的问题,而 ...

  8. 设计模式-观察者模式(Observer)-Java

    设计模式-观察者模式(Observer)-Java 目录 文章目录 1.前言 2.示例案例-多人联机对战游戏的设计 3.观察者模式概述 3.1.观察者模式定义 3.2.观察者模式结构 3.3.观察者模 ...

  9. 设计模式 - 观察者模式(Observer Pattern) Java内置 用法

    观察者模式(Observer Pattern) Java内置 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26601659 ...

最新文章

  1. 鸡肋的PHP单例模式
  2. vue在created调用点击方法_vue中created、mounted等方法整理
  3. databasemetadata获取表注释_宏基因组测序中短序列的注释
  4. Taylor Swift -《Fearless》
  5. CodeForces - 1509C The Sports Festival(dp)
  6. 用PL/SQL Develpoer工具完成导入和导出
  7. 利用c语言建立交易系统,【图】手把手教会你构建自己的交易系统 - 4_股票论坛,炒股公式,股票指标,股票公式,选股公式_数据、教程交流论坛_理想论坛 - 股票论坛...
  8. ExecuteNonQuery()方法发即:是指执行非查询SQL命令,如:增、删、改等
  9. js 高级-创建对象
  10. Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
  11. Oracle补习班第五天
  12. 个人主页 — github + jekyll 搭建自己的个人主页
  13. Prometheus监控系统+Grafana可视化工具搭建
  14. 单片机c语言中的精确延时程序,单片机精确毫秒延时函数
  15. android修改屏幕比例,安卓屏幕比例修改器
  16. ZoomKeeper
  17. 如何在国内开设美元账户进行美元投资?
  18. 基于stm32的智能药盒
  19. win7开机蓝屏提示STOP:0X0000007B的解决方法
  20. 我的 卡特尔16pf

热门文章

  1. Intel、AMD和Arm 告警:注意新的推断执行CPU漏洞!
  2. 开源呼叫中心软件 GOautodial 存在两个漏洞,可导致RCE
  3. 数百万人都在使用的9款无线路由器易受226个缺陷影响
  4. iOS开发:为什么你的学习效率如此低,为什么你很迷茫?
  5. 什么是最适合云数据库的架构设计?
  6. ld: library not found for -lcrt1.3.1.o
  7. 应用大数据开发环境监测全球标准
  8. ArcGIS API for Silverlight 调用GP服务绘制等值面
  9. 送给年轻人创业的经典好文章
  10. 蓝桥杯 ALGO-158 算法训练 sign函数