民宿设计网站大全,韶关市网站建设公司,登录功能网站怎么做的,长春关键词优化公司工厂模式分为简单工厂#xff0c;工厂和抽象工厂#xff0c;三种工厂的实现是越来越复杂的。 观察者模式 本质上就是一种订阅/发布的模型#xff0c;从逻辑上来说就是一对多的依赖关系。 什么意思呢#xff1f;好比是一群守卫盯着一个囚犯#xff0c;只要囚犯一有异动工厂和抽象工厂三种工厂的实现是越来越复杂的。 观察者模式 本质上就是一种订阅/发布的模型从逻辑上来说就是一对多的依赖关系。 什么意思呢好比是一群守卫盯着一个囚犯只要囚犯一有异动守卫就必须马上采取行动也有可能是更新状态本质上也是一种行动那么守卫就是观察者囚犯就是被观察者。 解决的问题 在系统中实现这种一对多的而且之间有一定关联的逻辑的时候由于需要保持他们之间的协同关系所以最简便的方法是采用紧耦合。但是这样加大了开发难度很容易造成Bug 观察者模式就解决了这么一个问题在保持一系列观察者和被观察者对象协同工作的同时把之间解耦了。 意图定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新。 主要解决一个对象状态改变给其他对象通知的问题而且要考虑到易用和低耦合保证高度的协作。 何时使用一个对象目标对象的状态发生改变所有的依赖对象观察者对象都将得到通知进行广播通知。 如何解决使用面向对象技术可以将这种依赖关系弱化。 关键代码在抽象类里有一个 ArrayList 存放观察者们。 应用实例 1、京东上某个商品暂时没货提示用户关注后到货通知这个暂时无货的商品是被观察者点击关注这个商品的用户就是观察者。 2、老师针对成绩在60分以下的同学定期发送最新的考题分析邮件每轮考试下来都会有不及格的同学由不及格变为及格的同学自动从邮件列表里移除新的不及格的同学会被加进邮件列表里。 优点 1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。 缺点 1、如果一个被观察者对象有很多的直接和间接的观察者的话将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话观察目标会触发它们之间进行循环调用可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的而仅仅只是知道观察目标发生了变化。 使用场景 1、有多个子类共有的方法且逻辑相同。 2、重要的、复杂的方法可以考虑作为模板方法。转载于:https://www.cnblogs.com/FMOON/p/8934079.html