浅谈 Observable和Observer 观察者模式

1.什么是观察者模式

观察者模式软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,

并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式

通常被用来实时事件处理系统。

2.java如何实现观察者模式

  java通过 类java.util.Observable 和 接口 java.util.Observer 实现该模式。(不得不吐槽一下,sun公司真的土掉渣了,

类的名字以able结束,接口反而不用) 被观察者继承Observable 观察者实现Observer接口。下面看例子:


//被观察者
public class TObservable extends Observable {
	
	private int data;
	
	public void setDate(int data){
		this.data =data;
		this.setChanged();
		this.notifyObservers();
	} 
	public Integer getData(){
		return data;
	}

}
/**
 * 观察者
 * @author 
 */
public class TObserver implements java.util.Observer{


	//观察者实现 update方法
	@Override
	public void update(Observable o, Object arg) {
		TObservable observable = (TObservable) o;
		System.out.println("TObservable.date is exchange:"+observable.getData());
	}


}

	//测试
	public static void main(String[] args) {
		//实例化被观察者
		TObservable impl = new TObservable();
		//添加观察者,可以添加多个观察者
		impl.addObserver(new TObserver());
		//被观察者发生改变
		impl.setDate(12);
		impl.setDate(13);


	}



3.使用Observer和Observable 观察者与被观察者是同一对象

//example
public class TOObs extends Observable implements Observer {
	
	private int data;
	
	public void setData(int data){
		this.data =data;
		this.setChanged();
		this.notifyObservers();
	}
	public Integer getData(){
		return this.data;
	}

	@Override
	public void update(Observable o, Object arg) {
		TOObs toobs = (TOObs)o;
		System.out.println("exchanges"+toobs.getData());
	}

       //测试
        TOObs toobs = new TOObs();
	toobs.addObserver(toobs);
	toobs.setData(11);
	toobs.setData(11);






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值