观察者模式 例子

 

 

package test;

import java.util.Observable;
import java.util.Observer;
/**
 * 观察者 模式
 */
public class TestObserver {

	public static void main(String[] args) {
		//观察者
		User nzh = new User("nzh");
		User xp = new User("小平");
		//被观察者
		Weibo weibo = new Weibo();
		//一定要注册
		weibo.addObserver(xp);
		weibo.addObserver(nzh);
		weibo.pushNewInfo("发干货了!!");
		
	}
}
/**
 * 观察者 实现Observer 接口
 */
class User implements Observer{

	String id ;
	public User(String id){
		this.id = id;
	}
	
	@Override
	public void update(Observable o, Object arg) {
		
		System.out.println(id+":用户收到更新-发送者:"+o.toString()+"发送内容:"+arg);
	}
	
}
/**
 * 被观察者 继承 Observable类,并 实现推送更新的方法
 */
class Weibo extends Observable{
	
	public void pushNewInfo(String content	){
		 // 标识状态或者内容发生改变
		setChanged();
		// 通知所有观察者
		notifyObservers(content);
	}
	
	@Override
	public String toString() {
		return "Weibo";
	}
}





应用例子: 实现app的摇一摇截图功能

分析:由于在每个activity页面都有可能发生截图,这时可以把所有activity组件作为观察者,将重力感应组件

作为被观察者,当重力感应满足条件时(监听到摇一摇),被观察者 通知 观察者,观察者开始截屏。


观察者 : Activity 组件(对象)

被观察者:重力感应组件(对象)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值