本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。
作者:liuyuan_jq
2011-06-14
上节的例子中有两个缺点:
1. 上个例子中我们采用的是推的方式,当主题对象的数据更新时,所有的观察者对象的数据都必须更新。但是主题对象传递给观察者的数据可能不是某些观察者想要的或者观察者只是使用其中一部分数据。在这种情况下,观察者对象会强迫收到一些无用的数据。
2. 当主题对象的数据更新时,所有的观察者对象都必须立即更新。气象站测试非常敏锐,以至于温度计读数每十分之一度都会更新,这会造成WeatherData对象持续不断地通知观察者,我们并不希望看到这样的事情发生。如果我们希望半度以上才更新,就可以在温度差距到达半度时,调用setChanged(),进行有效的更新。
解决方案:
1. 如果观察者对象经常收到一些无用的信息,则可以采用拉的方式,主动地从主题对象获得消息。主题对象可以提供一些getter方法来满足要求。
2. 可以增加一个setChanged()方法,用来标记主题对象状态已经改变的事实,让notifyObservers()知道当它被调用时应该更新观察者。如果调用notifyObservers()之前没有先调用setChanged(),则观察者就不会被通知。你也许不会用到此功能,但是添加这样的功能,当需要时就可以使用,让你的系统可以更有弹性。
源码
weatherData.py
displayElement.py
分享到:
相关推荐
在Head First的设计模式系列书籍中,作者通过易懂且生动的方式介绍了观察者模式。观察者模式的核心思想是“发布-订阅”机制,它将观察目标(被观察者)和观察者(订阅者)解耦,使得两者可以独立地变化。这种模式的...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...
从生活中的例子可以看出,只要对订阅号... 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为。
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 Observer Pattern defines a one-to-many dependency between objects so that when one object ...
在"ObserverPattern(简单实现)1.rar"中,我们可以看到一个简单的观察者模式实现。主题类(Subject)通常包含一个添加、删除和通知观察者的接口。当主题状态改变时,它会调用`notifyObservers()`方法,将变化通知给...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
《Headfirst设计模式》是一本深受开发者欢迎的设计模式学习书籍,尤其对于初学者而言,其独特的教学方式使得复杂的概念变得易于理解。这本书以其高清的中文版PDF格式提供,结合书中源码,为读者提供了深入实践的可能...
其中,观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态变化时会通知所有观察者,使它们能够自动更新自己。...
《HeadFirst设计模式》是一本深受开发者欢迎的书籍,它以独特、易理解的方式介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的最佳实践,它们为软件设计提供了可复用的...
《Head-First设计模式》是一本面向初学者的优秀设计模式教程,主要针对Java编程语言。这本书通过易于理解的方式介绍了23种经典的GoF设计模式,帮助开发者提升代码的可复用性和可维护性。设计模式是软件工程中的重要...
行为型模式涉及对象间的交互和责任分配,包括模板方法模式(Template Method)、观察者模式(Observer)、策略模式(Strategy)、职责链模式(Chain of Responsibility)、命令模式(Command)、迭代器模式...
《Head First 设计模式》的英文版是一本面向初学者的设计模式入门书籍,它以幽默风趣的文风,深入浅出地介绍了软件设计中经常使用的设计模式。设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的...
行为型模式如策略(Strategy)、观察者(Observer)、装饰器(Decorator)和模板方法(Template Method)等,则关注对象间的行为协作。 每章结束时,书中还包含了要点整理和习题,帮助读者复习和巩固知识点。通过...
- 观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。源码中会展示如何实现事件发布和订阅机制。 - 状态模式(State...
行为型模式则关注于对象间的交互和责任分配,例如策略模式(Strategy)、观察者模式(Observer)和命令模式(Command)。 在《Head First 设计模式》中,作者通过幽默风趣的插图和生动的例子,使得原本可能枯燥的...
《HeadFirst设计模式》是设计模式领域的一本经典著作,以其独特的教学方式和生动的插图深受初学者喜爱。这本书通过实例和互动式的学习方法,深入浅出地讲解了23种经典的设计模式。源代码作为理论知识的实践部分,...
行为型模式则主要处理对象之间的交互和责任分配,例如策略模式(Strategy)、观察者模式(Observer)和职责链模式(Chain of Responsibility)等,它们有助于实现灵活、可扩展的行为。 《Head First设计模式》书中...