定义
属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己
示例
场景:公众号推送文章,用户进行接收
/**
* 类描述:微信公众号用户(观察者)
* 创建人:woochen123
* 创建时间:2017/10/14 22:28
*/
public interface IWxPublicUserObserver {
/**
* 获得文章
*/
void getArticle(Article article);
}
/**
* 类描述:微信公众号(被观察者)
* 创建人:woochen123
* 创建时间:2017/10/14 22:33
*/
public class WxPublicNumberObservable {
private ArrayList<IWxPublicUserObserver> observers;
public WxPublicNumberObservable() {
observers = new ArrayList<>();
}
/**
* 订阅
*/
public void subscribe(IWxPublicUserObserver observer){
observers.add(observer);
}
/**
* 取消订阅
*/
public void unSubscribe(IWxPublicUserObserver observer){
observers.remove(observer);
}
/**
* 推送文章
*/
public void pushArticle(Article article){
for (IWxPublicUserObserver observer : observers) {
observer.getArticle(article);
}
}
}
public void resActivity(){
WxPublicNumberObservableManager.getInstance().pushArticle(new Article());
};
public void desActivity(){
WxPublicNumberObservableManager.getInstance().subscribe(new IWxPublicUserObserver() {
@Override
public void getArticle(Article article) {
//阅读文章
}
});
}
源码中使用
RxJava
使用ListView时Adapter的notifyDataSetChanged()方法
广播接收者
总结
观察者设计模式使事件的发送方和接收方实现了解耦,符合六大设计原则
网友评论