大佬教程收集整理的这篇文章主要介绍了23种设计模式之观察者模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
定义: 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新
通俗的说,就是一个类的某个条件满足时,会调用一系列定义好的方法
其类图如下:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/7b73b311860f86cd44b7dc3405307a12.jpg" >
其中的4个角色:
被观察者抽象类代码:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/c584aede8e1ab04439c6e74c1e51188f.jpg" >
具体被观察者代码:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/8cfec990bc8f5cea8d5a871dc4c298fa.jpg" >
观察者接口代码:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/2b33d3671b7118d7513928bbdaf9d7df.jpg" >
具体的观察者代码:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/60a0ffadf598b4a43a3ea9d2962f6f1c.jpg" >
场景类如下:
title="23种设计模式之观察者模式" alt="23种设计模式之观察者模式" src="https://cn.js-code.com/res/2019/01-10/21/82661c8cccb28ae4aec0d8adf8de9258.jpg" >
观察者模式的优点:
观察者模式的缺点:
观察者模式需要考虑并发效率和运行效率问题,一个被观察者,多个观察者,开发和调试就会比较复杂,而且在Java中消息的通知是顺序执行,一个观察者卡壳,会影响整体的执行效率. 在这种情况下,一般考虑采用异步的方式
观察者模式的使用场景:
1.广播链的问题
一个观察者可以有双重身份,既是观察者,也是被观察者,链一旦建立,这个逻辑就比较复杂,可维护性非常差. 根据经验建议,在一个观察者模式中最多出现一个对象既是观察者也是被观察者,也就是说消息最多转发一次,这还是比较好控制的.
观察者模式和责任链模式的最大区别就是观察者广播链在传播的过程中消息是随时更改的,它是由相邻的两个节点协商的消息结构; 而责任链模式在消息传递过程中基本上保持消息不可变,如果要改变,也只是在 原有的消息上进行修正
2.异步处理问题
被观察者发生动作了,观察者要做出回应,如果观察者比较多,而且处理时间比较长怎么办,用异步呗,异步处理就要考虑线程安全和队列的问题
1.Java 世界中的观察者模式
在Java中,java.util.observable 实现了被观察者的功能,被观察者直接继承即可,java.util.observer 是观察者接口,已经写好了
2.项目中真实的观察者模式
观察者模式在实际项目和生活中的例子:
以上是大佬教程为你收集整理的23种设计模式之观察者模式全部内容,希望文章能够帮你解决23种设计模式之观察者模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。