Java设计模式探究之观察者模式详解
1.观察者模式是什么
顾名思义,有两个对象,观察者和被观察者。当被观察者数据发生变化时,提醒观察者更新数据或状态。
2.如何实现
1)定义两个类,观察者和被观察者。
2)被观察者要维护一个集合,存放观察者对象。并且提供增删方法。
3)被观察者数据发生变化时,要调用观察者的方法,以便通知观察者更新数据或状态。
4)基于面向抽象原则,可以将观察者和被观察者中的方法提取接口中。
3.代码实现
1)观察者接口
/** * 抽象观察者接口 */ public interface Observer { /** * 抽象方法 */ public void uPdate(); public void remove(); }
2)被观察者接口
/** * 抽象被观察者 */ public interface Observed { public void addObserver(Observer observer); public void deleteObserver(Observer observer); public void notifyObservers(); }
3)观察者实现
/** * 观察者实现 */ public class ObserverImpl implements Observer { public ObserverImpl(){ } @Override public void uPdate() { System.out.println("update...."); } }
4)被观察者实现
/** * 观察者实现 */ public class ObserverImpl implements Observer { public ObserverImpl(){ } private Observed observed; public ObserverImpl(Observed observed){ this.observed = observed; observed.addObserver(this); } @Override public void uPdate() { System.out.println("观察者更新数据变化...."); } @Override public void remove() { if(observed!=null){ observed.deleteObserver(this); } } }
5)测试类
public class TestObserver { public static void main(String args []){ ObservedImpl subject = new ObservedImpl(); ObserverImpl observer1 = new ObserverImpl(subject); subject.notifyObservers(); } }
4.延伸拓展
在Android的代码中,有很多地方用到了观察者模式。
Android的广播机制,就是采用的观察者模式。
我们创建一个广播接收者,来接收系统广播。在Android源码中,其实就维护了一个接收者的集合,用于存放所有的广播接收者。
到此这篇关于Java设计模式探究之观察者模式详解的文章就介绍到这了,更多相关Java观察者模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot基于Swagger2构建API文档过程解析
这篇文章主要介绍了SpringBoot基于Swagger2构建API文档过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-11-11spring-gateway网关聚合swagger实现多个服务接口切换的示例代码
这篇文章主要介绍了spring-gateway网关聚合swagger实现多个服务接口切换的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03如何使用Jackson和JSON Pointer查询解析任何JSON节点
本文介绍了JSON Pointer是字符串表达式,可以非常方便解析复杂JSON节点值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09Spring-Cloud Eureka注册中心实现高可用搭建
这篇文章主要介绍了Spring-Cloud Eureka注册中心实现高可用搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04
最新评论