博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之观察者模式
阅读量:6820 次
发布时间:2019-06-26

本文共 1693 字,大约阅读时间需要 5 分钟。

1.概念

        定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2.UML图

3.代码

interface Subject {    public void attach(Observer observer);    public void detach(Observer observer);    void notifyObservers(); } public class ConcreteSubject implements Subject {
private Vector observersVector = new Vector(); public void attach(Observer observer) { observersVector.addElement(observer); } public void detach(Observer observer){ observersVector.removeElement(observer); } public void notifyObservers(){ Enumeration enumeration = observersVector.clone()).elements(); while (enumeration.hasMoreElements()){ ((Observer)enumeration.nextElement()).update(); } } } public interface Observer { void update(); } public class ConcreteObserver1 implements Observer{ public void update() { System.out.println("Obsver1 execute"); } } public class ConcreteObserver2 implements Observer{ public void update() { System.out.println("Obsver2 execute"); } } public class Main { public static void main(String[] args) { ConcreteSubject concreteSubject = new ConcreteSubject (); ConcreteObserver1 observer1 = new ConcreteObserver1(); ConcreteObserver2 observer2 = new ConcreteObserver2(); generator.addObserver(observer1); generator.addObserver(observer2); concreteSubject.notifyObservers(); } }

4.应用场景

   当对一个对象的改变需要同时改变其它对象,依赖于它的对象都需要改变时。

 --------------------------------------------------------------------

PS: 欢迎关注公众号"Devin说",会不定期更新Java相关技术知识。

--------------------------------------------------------------------

 

转载于:https://www.cnblogs.com/zhaolizhe/p/6923883.html

你可能感兴趣的文章
sed处理变量替换
查看>>
Netsh Diag
查看>>
win8
查看>>
AIX 安装 SVN 客户端 完整过程 subversion-1.8
查看>>
8-17 页面分页
查看>>
数据库--sqlite的操作
查看>>
手机号码 正则
查看>>
如何解酷派CPB包
查看>>
Linux 安装JDK,配置JAVA环境变量
查看>>
jenkins插件之小白的笔记
查看>>
html meta中的viewport指令
查看>>
windows 2008的安装
查看>>
Unity3D研究院之手游开发中所有特殊的文件夹(assetbundle与Application.persistentDataPath)...
查看>>
[DeviceOne开发]-手势动画示例分享
查看>>
《Activiti实战》读书笔记——5.1.4
查看>>
Linux文件管理类命令
查看>>
Kuerbernetes 1.11 二进制安装
查看>>
SpringMVC异步处理之@Async(附源代码 - 单元测试通过)
查看>>
undefined reference to 'pthread_setspecific '
查看>>
MediaBrowserService 音乐播放项目--IT蓝豹
查看>>