• java: 观察者模式:Observable被观察者,Observer观察者


    java: 观察者模式:Observable被观察者,Observer观察者

    以房子价格为例,卖房者为被观察者:

    import java.util.Observable;
    
    //被观察者子类化
    public class House extends Observable {
    
    	private float price;
    	
    	public House(float price)
    	{
    		this.price = price;
    	}
    
    	public float getPrice() {
    		return price;
    	}
    
    	public void setPrice(float price) {
    		//通知内容已经被修改
    		super.setChanged();
    		//一旦价格修改成功,那么应该通知观察者
    		this.price = price;
    		//通知所有观察者
    		super.notifyObservers(price);
    	}
    	
    	public String toString()
    	{
    		return "房子";
    	}
    	
    	
    	
    
    }
    

      

    买房者为观察者:

    import java.util.Observable;
    import java.util.Observer;
    
    //实现观察者接口
    public class Person implements Observer {
    
    	@Override
    	public void update(Observable o, Object arg) {
    		// TODO 自动生成的方法存根
    		
    		//当被观察者发生变化,观察者立马能接受都信息
    		System.out.println( o + " ****** 房子的价格已经发生改变" + arg);
    		
    	}
    
    }
    

      

    实例被观察者,与观察者:

    public class ObserverDemo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    
    		//实例化被观察者
    		House h = new House(3000.00f);
    		
    		//实例化观察者
    		Person p1 = new Person();
    		Person p2 = new Person();
    		Person p3 = new Person();
    		
    		//增加观察者
    		h.addObserver(p1);
    		//增加观察者
    		h.addObserver(p2);
    		//增加观察者
    		h.addObserver(p3);
    		
    		//被观察者价格发生改变
    		h.setPrice(4000.00f);
    		
    	}
    
    }
    

      

  • 相关阅读:
    Fundamentals of Garbage Collection
    CLR的八大特性
    Navigation and Pathfinding
    Work-Stealing in .NET 4.0
    Graphics.Blit
    整数的可除性
    关于强度
    重心坐标空间
    性能测试中TPS和并发用户数
    LoadRunner 12.02 安装以及汉化教程
  • 原文地址:https://www.cnblogs.com/achengmu/p/7006952.html
Copyright © 2020-2023  润新知