zoukankan      html  css  js  c++  java
  • Java观察者设计模式

    在java.util包中提供了Observable类Observer接口,使用它们即可完成观察者模式。

    多个观察者都在关注着价格的变化,只要价格一有变化,则所有的观察者会立即有所行动。

    //=================================================
    // File Name       :	Observer_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    import java.util.Observable;
    import java.util.Observer;
    
    // 类名:House
    // 属性:
    // 方法:
    class House extends Observable{
    	private float price;
    
    	public House(float price) {
    		super();
    		this.price = price;
    	}
    
    	public float getPrice() {
    		return price;
    	}
    
    	public void setPrice(float price) {
    		super.setChanged();   						//设置变化点
    		super.notifyObservers(price);		//通知所有观察者价格改变
    		this.price = price;		
    	}
    
    	@Override
    	public String toString() {
    		return "房子价格为:" + this.price;
    	}
    	
    }
    
    //类名:HouseObserver
    //属性:
    //方法:
    class HouseObserver implements Observer{
    	private String name;					//观察者的名字
    	
    	public HouseObserver(String name) {
    		super();
    		this.name = name;
    	}
    
    	@Override
    	public void update(Observable o, Object arg) {
    		// TODO 自动生成的方法存根
    		if(arg instanceof Float){																//判断参数类型
    			System.out.println(this.name+"观察到价格改变为");
    			System.out.println(((Float)arg).floatValue());
    		}
    	}
    	
    }
    
    //主类
    //Function        : 	Observer_demo
    public class Observer_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		House h = new House(1000000);
    		HouseObserver ho1 = new HouseObserver("购房者1");
    		HouseObserver ho2 = new HouseObserver("购房者2");
    		HouseObserver ho3 = new HouseObserver("购房者3");
    		h.addObserver(ho1);				//加入观察者
    		h.addObserver(ho2);
    		h.addObserver(ho3);
    		System.out.println(h);			//输出房子的价格
    		h.setPrice(666);						//修改房子的价格
    		System.out.println(h);			//输出房子的价格
    	}
    
    }
    
  • 相关阅读:
    JeePlus:代码生成器
    JeePlus:API工具
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5270965.html
Copyright © 2011-2022 走看看