观察者模式(Observer和Observable实现)

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);
    }
    
    
}
原文地址:https://www.cnblogs.com/wwzyy/p/5546114.html