观察者模式:

被观察的类:

  1. package cn.itcast.obserdemo;
  2.  
  3. import java.util.Observable;
  4.  
  5. //House是被观察的,这里直接继承java中的类库(API)Observable类
  6. public class House extends Observable {
  7. //给House类声明一个price属性
  8. private float price;
  9.  
  10. public House(float price){
  11. this.price = price ;
  12. }
  13. public String toString(){
  14. return "房子";
  15. }
  16. public float getPrice(){
  17. return price;
  18. }
  19.  
  20. public void setPrice(float price){
  21. super.setChanged();//通知内容已经被修改了
  22. this.price = price;
  23. //一旦修改,则表示价格改变,那么价格改变之后,实际上应该立即通知所有的观察者
  24. super.notifyObservers(price);//通知所有的观察者已经改变.
  25. }
  26. }

观察者类:

  1. package cn.itcast.obserdemo;
  2.  
  3. import java.util.Observable;
  4. import java.util.Observer;
  5.  
  6. //人是观察者,实现Observer接口
  7. public class Person implements Observer{
  8. //然后要实现Observer中的一个update()方法
  9. public void update(Observable o, Object arg) {
  10. //为了看下update中的各个参数代表的是什么意思,打印这两个参数
  11. System.out.println(o + "****被观察的操作有变更...."+arg);
  12. }
  13. }

主测试类:

  1. package cn.itcast.obserdemo;
  2.  
  3. public class TestObserver {
  4. public static void main(String[] args) {
  5. //new 一个被观察者House
  6. House h = new House(30000.0f);
  7. //new 三个观察者Person
  8. Person per1 = new Person();
  9. Person per2 = new Person();
  10. Person per3 = new Person();
  11. //被观察者和观察者之间建立"观察与被观察"关系
  12. h.addObserver(per1);//House对象h1增加一个观察者对象per1
  13. h.addObserver(per2);
  14. h.addObserver(per3);
  15. //让被观察者House对象house的发生变化
  16. h.setPrice(60000.0f);
  17. }
  18. }
  19. /*
  20. 打印的内容
  21. 房子****被观察的操作有变更....60000.0
  22. 房子****被观察的操作有变更....60000.0
  23. 房子****被观察的操作有变更....60000.0
  24. */

[设计模式]观察者模式1(用JDK提供的API)的更多相关文章

  1. jdk提供的线程协调API suspend/resume wait/notify park/unpark

    线程通信(如 线程执行先后顺序,获取某个线程执行的结果等)有多种方式: 文件共享 线程1 --写入--> 文件 < --读取-- 线程2 网络共享 变量共享 线程1 --写入--> ...

  2. java设计模式--观察者模式和事件监听器模式

    观察者模式 观察者模式又称为订阅—发布模式,在此模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通常被用来事件 ...

  3. 设计模式-观察者模式(Observer Model)

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6031844.html LZ刚刚开始心热的开启了博客之路,想着记点流水账,可帝都的天都冷成 ...

  4. JAVA JDK 1.6 API中文版.CHM打开chm提示,“ 已取消到该网页的导航”

    JAVA  JDK 1.6 API中文版.CHM打开chm提示,“ 已取消到该网页的导航” silent fish 装了win7后,打开chm文件,发现很多在xp系统打开正常的chm文件竟然出现问题, ...

  5. linkin大话设计模式--观察者模式

    linkin大话设计模式--观察者模式 观察者模式定义了对象间的一对多依赖关系,让一个或者多个观察者观察一个对象主题.当主题对象的状态发生改变的时候,系统能通知所有的依赖于此对象的观察者对象,从而能自 ...

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

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

  7. [转]在static代码块或static变量的初始化过程中使用ServiceManager提供的api的陷阱

    一. 案例 1.源码: /** @hide */ private TelephonyManager(int slotId) { mContext = null; mSlotId = slotId; i ...

  8. java并发学习--第四章 JDK提供的线程原子性操作工具类

    在了解JDK提供的线程原子性操作工具类之前,我们应该先知道什么是原子性:在多线程并发的条件下,对于变量的操作是线程安全的,不会受到其他线程的干扰.接下来我们就学习JDK中线程的原子性操作. 一.CAS ...

  9. 18. 星际争霸之php设计模式--观察者模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

随机推荐

  1. 卡尔曼滤波器【Kalman Filter For Dummies】

    搬砖到此: A Quick Insight     As I mentioned earlier, it's nearly impossible to grasp the full meaning o ...

  2. #pragma warning (default : n)

    参考链接:http://www.cnblogs.com/JCSU/articles/1996483.html 在VC2013中编译以下win32 C++ 控制台程序,会产生2个告警warnings # ...

  3. Good practice release jar to Nexus

    Step  suppose you need to develop a feature,when you finish the feature ,you need to release the jar ...

  4. Visual Studio C++ Command Line

    最近在Visual Studio 2012进行vp8的开发,之前一直都是在ubuntu上进行开发,关于编译链接的一些选项可直接在makefile中定义,比如vp8的头文件都放在include文件下面, ...

  5. 说说QQ空间SEO

    其实这个话题由来已久,已经有很多大神做到QQ空间日访问量破万,甚至更多了,卖产品卖到抽筋儿. 怎么说QQ空间SEO,其实不如说QQ空间引流更合适,因为QQ空间与QQ的特殊关系,SEO貌似不是很重要,其 ...

  6. Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)

    http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un- ...

  7. POJ 2749--Building roads(2-SAT)

    题意:John有n个牛棚,每个牛棚都住着一些牛,这些牛喜欢串门(drop around, 学到了...),所以John想要建几条路把他们连接起来.他选择的方法是建两个相连中转站,然后每个牛棚连接其中一 ...

  8. SQL2008-功能设置

    1.问题:修改表字段类型后,无法保存答:工具—选项—Designers—表设计器和数据库设计器—阻止保存要求重新创建表的更改前的勾去掉. 2.问题: 编写SQL语句的地方怎么自动换行答:工具-> ...

  9. 第十三章、学习 Shell Scripts 善用判断式

    善用判断式 利用 test 命令的测试功能 我要检查 /dmtsai 是否存在时,使用: [root@www ~]# test -e /dmtsai [root@www ~]# test -e /dm ...

  10. 依賴注入入門——Unity(一)

    參考資料http://blog.csdn.net/m13666368773/article/details/7802126 背景介紹 在设计模式中,尤其是结构型模式很多时候解决的就是对象间的依赖关系, ...