package com.wzy.java8.thread; import java.util.Observable; import java.util.Observer; public class Demo4 { public static void main(String[] args) { /* * 如果(被观察者)House的价格高于初始的价格,就通知(观察者)People * 观察者就会得到信息 * */ House house = new House(100); People tom = new People("tom"); People jerry = new People("jerry"); People jack = new People("jack"); house.addObserver(tom);//添加观察者 house.addObserver(jerry);//添加观察者 house.addObserver(jack);//添加观察者 house.setPrice(1000); } } class House extends Observable{//被观察的对象 private int price; public House(int p){ this.price = p; } public void setPrice(int price) { if(price > this.price) { setChanged();//已经发生了改变 notifyObservers(price);//通知观察者价格已经改变了 } this.price = price; } } class People implements Observer{//观察者 private String name; public People(String name){ this.name = name; } @Override public void update(Observable o, Object arg) { //观察者得到通知后 //执行此方法 //o为通知你的对象House;arg为传入的参数price System.out.println(o.getClass() +" 的价格为 "+arg); } }