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);
        }
        
        
    }
  • 相关阅读:
    CSS选择器
    CSS框模型
    AJAX
    HTML 表单
    二叉树
    词嵌入、word2vec
    双向、深层循环神经网络
    20201012----每天都在进步吗?
    20201012--环境搭建
    20201011--记录一下
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5546114.html
Copyright © 2011-2022 走看看