2019独角兽企业重金招聘Python工程师标准>>>

观察者模式定义了一个一对多的依赖关系。让一个或多个观察者可以监视某一对象,当该对象的状态发生变化时,就可以通知所有的观察者,观察者执行响应的动作。

在java中,被观察者必须继承Observable类,Observable类常用方法如下:

  • public void addObserver(Observer o)  添加一个观察者

  • public void deleteObserver(Observer 0)  删除一个观察者

  • protected void setChanged() 被观察者设置自己的状态发生了变化

  • public void notifyObservers(Object arg) 通知所有的观察者

每一个观察者都要实现Observer接口,Observer接口中只有一个update方法,

public void update(Observable o, Object arg)

第一个参数表示被观察者实例,第二个参数表示修改的内容。

被观察者代码:

package com.yeetrack.test;import java.util.Observable;public class Hourse extends Observable
{private int price; //自身的属性,代表房子价格public int getPrice(){return price;}public void setPrice(int price){this.price = price;super.setChanged(); //设置自己的状态发生了变化super.notifyObservers(price);//通知被观察者price发生了变化}//构造方法public Hourse(int price){this.price = price;}
}

观察者代码:

package com.yeetrack.test;import java.util.Observable;
import java.util.Observer;public class HoursePriceObserver implements Observer
{private String name; //观察者自己的名字public HoursePriceObserver(String name){// TODO Auto-generated constructor stubthis.name = name;}//Observer中的update方法,如果被观察者状态发生变化,就会自动调用此方法public void update(Observable o, Object arg){// TODO Auto-generated method stubSystem.out.println(this.name+"  "+arg);}
}

测试代码:

package com.yeetrack.test;public class TestObserve
{/*** @param args*/public static void main(String[] args){// TODO Auto-generated method stubHourse hourse = new Hourse(10000);HoursePriceObserver hpo1 = new HoursePriceObserver("111"); //初始化观察者1HoursePriceObserver hpo2 = new HoursePriceObserver("222"); //初始化观察者2hourse.addObserver(hpo1); //为hourse添加一个观察者hourse.addObserver(hpo2);hourse.setPrice(40000);//改动hourse的价格,观察者hpo1和hpo2会自动调用update方法。}
}

转载于:https://my.oschina.net/u/147181/blog/164893

java观察者设计模式相关推荐

  1. java观察者设计模式_Java中的观察者设计模式

    java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...

  2. java监听设计模式(java观察者设计模式)

    今天给大家分享一下观察者设计模式(监听设计模式),该模式在很多主流得框架.源码中使用率非常高.在分享之前先给大家讲一个我们使用手机的一个场景,我们都用过手机,当我们手机来电话的时候,会有各种复杂的操作 ...

  3. java 观察者设计模式(十六)

    观察者模式(行为型) 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知依赖它的对象.观察者模式属于行为型模式. 一.观察者模式介绍 ...

  4. java 观察者模式示例_观察者设计模式示例

    java 观察者模式示例 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如 ...

  5. Java中的观察者设计模式

    在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,该对象依赖于一个特定对象( 主体)的状态 . ...

  6. java 观察者模式示例_Java中的观察者设计模式-示例教程

    java 观察者模式示例 观察者模式是行为设计模式之一 . 当您对对象的状态感兴趣并希望在发生任何更改时得到通知时,观察者设计模式很有用. 在观察者模式中,监视另一个对象状态的对象称为Observer ...

  7. Java中的观察者设计模式-示例教程

    观察者模式是行为设计模式之一 . 当您对对象的状态感兴趣并希望在发生任何更改时得到通知时,观察者设计模式很有用. 在观察者模式中,监视另一个对象状态的对象称为Observer ,而正在监视的对象称为S ...

  8. 观察者设计模式 Vs 事件委托(java)

    观察者设计模式 Vs 事件委托 标签: 设计模式 java 事件的委托 转载请注明原博客地址: http://blog.csdn.net/gdutxiaoxu/article/details/5182 ...

  9. 设计模式: 自己手动实现一个观察者设计模式

    观察者模式: 定义了对象之间的一对多依赖,这样一来.当一个对象(被观察者)改变状态时,它的全部依赖者(观察者)都会收到通知并自己主动更新. 在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型 ...

最新文章

  1. python 删除字符串中的所有相邻的重复项
  2. jakarta ee_Jakarta EE贡献–入门
  3. xvid 详解 代码分析 编译等
  4. 【LeetCode】【HOT】101. 对称二叉树(BFS+队列/递归)
  5. 修改sqlserver编码为utf8_修改Matlab默认编码格式为UTF-8
  6. RabbitMQ实例教程:用Java搞定工作队列
  7. 系统集成项目管理工程师计算题(案例计算题、挣值分析、EAC、ETC)
  8. MFC控件与变量的关联和值传递的方法
  9. 旧版的rust怎么老是掉线_RUST服务器进不去 RUST掉线用什么加速器解决?
  10. 无源贴片晶振四角引脚_有源晶振四个脚是如何定义的
  11. 软考计算机英语词汇,软考计算机专业英语常用词汇(字母D-E)
  12. 前端基础----html初识、常用标签
  13. 「机械工程」力矩,转矩,扭矩的理解
  14. 前端开发社区,前端校招面试题及解析大全
  15. GraphQL初探:Java服务示例及Yahoo/Elide
  16. NUC977 烧录uboot到 SPI flash
  17. excel多表数据汇总
  18. Python 网络爬虫工具:httpx 和 parsel(对比测评)
  19. mysql 获得元素的数量_一个递归获取祖先元素值的MySQL函数范例
  20. 刘汝佳蓝书后缀数组模板解释及补全

热门文章

  1. openstack学习笔记三 创建第一个实例
  2. 柜位预測(一)——显示柜位曲线图
  3. Node.js静态文件服务器实战[转]
  4. socket的阻塞非阻塞方法在缓冲区的差别
  5. 【电信增值业务学习笔记】8 3G视频类增值业务
  6. TP-LINK821N无线网卡拆解分析
  7. OpenShift — 架构设计
  8. 在RHEL5下构建DHCP及DHCP中继服务器
  9. 【转】 Android WebView内容宽度自适应
  10. Oracle笔记(中) 多表查询