zoukankan      html  css  js  c++  java
  • 观察者模式(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);
        }
        
        
    }
  • 相关阅读:
    PHP函数
    git (1)
    JavaScript(4)
    javascript-DOM(3)
    JavaScript-DOM(2)
    [转]分布式架构知识体系
    Mysql中查看每个IP的连接数
    Git常用命令备忘录
    windows下用vscode写C++
    sudo cd为什么不能够执行?
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5546114.html
Copyright © 2011-2022 走看看