java 观察者模式

<span style="font-size:14px;font-weight: normal;">/*
java 内置的一种观察者模式,多个观察者关注房价的变化,房价一变化多个观察者能感知到,学会查看API
*/
import java.util.*;
class House extends Observable{                //继承Observable表示一个被观察的对象
	private float price;                       //房子价钱
	public House(float price){
		this.price=price;
	}
	public float getPrice(){
		return this.price;
	}
	public void setPrice(float price){      	
	//此处会改变房子的价格,要让观察者能看到,每一次更改都要让观察者发现。
		super.setChanged();                    //设置变化点
		super.notifyObservers(price);          //通知观察者价格改变
		this.price=price;
		
	}
	public String toString(){
		return "房子价格为:"+this.price;
	}
	
}

class HousePriceObserver implements Observer{ //观察者,实现接口定义观察者
	private String name;
	public HousePriceObserver(String name){
		this.name=name;
	}
	//overload
	public void update(Observable o, Object arg){
		if(arg instanceof Float){
			System.out.print(this.name+"观察到价格变化为:");
			System.out.println(((Float)arg).floatValue());
			
		}
	}
}


public class ObserverDemo01{
	public static void main(String[] args){
		House h = new House(1000000);          //房子价格
		HousePriceObserver hpo1 = new HousePriceObserver("观察者1");
		HousePriceObserver hpo2 = new HousePriceObserver("观察者2");
		HousePriceObserver hpo3 = new HousePriceObserver("观察者3");
		//添加观察者
		h.addObserver(hpo1);
		h.addObserver(hpo2);
		h.addObserver(hpo3);
		System.out.println(h.toString());     //输出房子价格
		h.setPrice(600000);
	    System.out.println(h);
	}
}
</span>
使用本类中的方法this.xxx,使用父类中的方法super.xxx。学会查看API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值