首页 > 代码库 > 观察者模式
观察者模式
观察者模式:
被观察的类:
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增加一个观察者对象per113 h.addObserver(per2);14 h.addObserver(per3);15 //让被观察者House对象house的发生变化16 h.setPrice(60000.0f);17 }18 }19 /*20 打印的内容21 房子****被观察的操作有变更....60000.022 房子****被观察的操作有变更....60000.023 房子****被观察的操作有变更....60000.024 */
观察者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。