专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

设计模式(十二):观察者模式

68_1.png

优点:

  观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。

缺点:

  ① 如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃。在使用观察者模式是要特别注意这一点。

  ② 虽然观察者模式可以随时使观察者知道所观察的对象发生了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎么发生变化的。

适用范围:

  当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变时,应该考虑使用观察者模式。

客户端:  

  //被观察者

  Subject s = new Secretary();

  //两个观察者
  Observer o1 = new StockObserver(“张”,s);
  Observer o2 = new NBAObserver(“李”,s);

  //拜托通知
  s.addObserver(o1);
  s.addObserver(o2);

  //未通知
  s.removeObserver(o1);

  //观察结果
  s.setAction(“老板回来了”);

  //发出通知
  s.tell();

一句话概括:

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

    /**
     * Subject (被观察者接口,包括观察者(委托人)列表,增加和减少观察者(委托人)的方法,通知观察结果的方法)
     * Secretary (被观察者实例,前台秘书) - 观察者由直接观察实际情况,转为观察被观察者的状态,即等待被观察者发送提醒消息
     *
     * Observer (观察者接口,委托的方法,改变当前行为的方法)
     * StockObserver (看股票的观察者)   NBAObserver (看NBA的观察者)
     */

文章永久链接:https://tech.souyunku.com/20293

未经允许不得转载:搜云库技术团队 » 设计模式(十二):观察者模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们