观察者模式1(用JDK提供的API)

简介:

观察者模式:

被观察的类:

复制代码
 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     */
复制代码

 



本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4004529.html,如需转载请自行联系原作者
相关文章
|
Java API
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
1732 0
JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
|
3月前
|
监控 Java API
JDK 9新特性深度探索:平台日志API和服务
本文将深入探讨JDK 9中引入的平台日志API和服务。这一新特性为Java应用程序提供了更强大、灵活的日志记录功能,帮助开发者更好地监控和诊断应用程序的运行状况。本文将详细介绍平台日志API和服务的特性和优势,以及如何在项目中应用这一新特性来提升应用程序的稳定性和可维护性。
|
3月前
|
Java API 数据处理
JDK 8:Stream API——数据处理的新篇章
JDK 8引入了Stream API,为Java中的数据处理提供了一种全新的方式。本文将详细介绍Stream API的原理、优势以及如何在实际开发中应用这一特性。
|
10月前
|
安全 Java API
JDK8新特性之日期时间API
JDK8新特性之日期时间API-案例实操
60 1
JDK8新特性之日期时间API
|
6月前
|
存储 SQL Java
【JDK新特性】必会_Stream API
【JDK新特性】必会_Stream API
|
8月前
|
存储 Java API
JDK9特性——语法、API的改变
JAVA8 中,匿名内部类不能使用钻石操作符,如下代码在JAVA8 中是报错的,匿名内部类这里不支持泛型推断,重写的方法不明确泛型
47 0
|
监控 JavaScript 安全
jdk17文档中的JDK API模块介绍
jdk17文档中的JDK API模块介绍
jdk17文档中的JDK API模块介绍
|
IDE 安全 Java
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结
150 0
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结
|
Java API
Java(JDK)13新特性之Reimplement the Legacy Socket API
Java(JDK)13新特性之Reimplement the Legacy Socket API
161 0
|
JavaScript 前端开发 网络协议
JDK 9新特性之Flow API 初探
JDK 9新特性之Flow API 初探
JDK 9新特性之Flow API 初探