如果要想实现观察者模式,则必须依靠Java.util包中提供的Observable类和Observer接口。

class House extends Observable{ // 表示房子可以被观察  
    private float price ;// 价钱  
    public House(float price){  
        this.price = price ;  
    }  
    public float getPrice(){  
        return this.price ;  
    }  
    public void setPrice(float price){  
        // 每一次修改的时候都应该引起观察者的注意  
        super.setChanged() ;    // 设置变化点  
        super.notifyObservers(price) ;// 价格被改变  
        this.price = price ;  
    }  
    public String toString(){  
        return "房子价格为:" + this.price ;  
    }  
};   
class HousePriceObserver implements Observer{  
    private String name ;  
    public HousePriceObserver(String name){ // 设置每一个购房者的名字  
        this.name = name ;  
    }  
    public void update(Observable o,Object arg){  
        if(arg instanceof Float){  
            System.out.print(this.name + "观察到价格更改为:") ;  
            System.out.println(((Float)arg).floatValue()) ;  
        }  
    }  
};  
public class ObserDemo01{  
    public static void main(String args[]){  
        House h = new House(1000000) ;  
        HousePriceObserver hpo1 = new HousePriceObserver("购房者A") ;  
        HousePriceObserver hpo2 = new HousePriceObserver("购房者B") ;  
        HousePriceObserver hpo3 = new HousePriceObserver("购房者C") ;  
        h.addObserver(hpo1) ;  
        h.addObserver(hpo2) ;  
        h.addObserver(hpo3) ;  
        System.out.println(h) ; // 输出房子价格  
        h.setPrice(666666) ;    // 修改房子价格  
        System.out.println(h) ; // 输出房子价格  
    }  
}; 

运行结果:

房子价格为:1000000.0

购房者C观察到价格更改为:666666.0

购房者B观察到价格更改为:666666.0

购房者A观察到价格更改为:666666.0

房子价格为:666666.0

观察者设计模式( Observable类Observer接口)的更多相关文章

  1. Java常用类库--观察者设计模式( Observable类Observer接口)

    如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Obse ...

  2. 《Head First设计模式》批注系列(一)——观察者设计模式

    最近在读<Head First设计模式>一书,此系列会引用源书内容,但文章内容会更加直接,以及加入一些自己的理解. 观察者模式(有时又被称为模型-视图(View)模式.源-收听者(List ...

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

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

  4. 利用Java提供的Observer接口和Observable类实现观察者模式

    对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...

  5. Java Observer接口和Observable类实现观察者模式

    对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: package java.util; public ...

  6. 设计模式之观察者模式(Observable与Observer)

    设计模式之观察者模式(Observable与Observer) 好久没有写博客啦,之前看完了<设计模式之禅>也没有总结一下,现在回忆一下设计模式之观察者模式. 1.什么是观察者模式 简单情 ...

  7. Observer模式(观察者设计模式)

    Observer 设计模式? 在Observer模式中,当观察对象的状态发生变化时,会通知给观察者.Observer模式适用于根据对象状态进行相应处理的场景. Observer 并非主动观察,而是被动 ...

  8. Java基础之一组有用的类——Observable和Observer对象(Horrific)

    控制台程序. Obserable类提供了一个有趣的机制,可以把类对象中发生的改变通知给许多其他类对象. 对于可以观察的对象来说,类定义中需要使用java.util.Observable类.只需要简单地 ...

  9. (java)从零开始之--观察者设计模式Observer

    观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...

随机推荐

  1. POJ 1131

    #include <iostream> #include <string> using namespace std; ]; int main() { //freopen(&qu ...

  2. java --Method

    MethodDemo class MethodDemo { public static void main(String[] args) { //调用自定义的方法. draw(4,5); draw(8 ...

  3. Python生成gexf文件并导入gephi做网络图分析

    Gephi是一款优秀的复杂网络分析软件,支持导入多种格式的文件.gexf格式是Gephi 推荐的格式,基于 XML.本文是一个用python写的简单Demo,示例如何生成一个典型的gexf格式文件.代 ...

  4. centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)

    centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) #####################     sendmail.py  begin     ######## ...

  5. Vue-router的基本使用

    Vue-router的基本使用 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. Jsp页面用ajax传输json数组的方法

    详细参考jquery的API 这里主要展示实例,即写法 <%@ page language="java" contentType="text/html; chars ...

  7. 《构建之法》阅读笔记06-项目经理PM

    软件团队里除了能写代码.测试代码和画图做设计的成员,还有一类角色,不做上面这些事情但也很重要,我们叫他们项目经理--PM. PM 的M 就是 Manager: P有这几种: Product Manag ...

  8. Linux发行版,分类,CentOS下载

    目录 Debian 系(dpkg) 1. 包管理 2. 发行版 Red Hat 系(rpm) 1. 包管理 2. 发行版 其他发行版   Debian 系(dpkg) 1. 包管理 包管理器:dpkg ...

  9. 配置jenkins slave 问题,ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

    因为需要需要搭建一套自动化环境的windows电脑作为slave,简单的把原来用来mac上的job配置一模一样的配置了下,运行时遇到如上问题,google半天百思不得其解, 后来尝试把SCM里面的br ...

  10. “App.exe 以附加有调试器,但没有将该调试器配置为调试此未经处理的异常。”

    目前不清楚原因,但是将项目文件放到C盘就可以正常调试运行. 记录一下