这篇文章主要为大家详细介绍了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观察者模式内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:Java设计模式探究之观察者模式详解
猜你喜欢
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01