|
1
7
一般来说,当您接到update()的调用时,应该更新Observable中的所有内容。如果这不实际,可以将提示传递给notifyobservers()。 这帮书说,观察者模式的一个后果是: “意外更新。因为观察者不知道对方的存在,他们可能对改变主题的最终代价视而不见。对该主题的看似无害的操作可能会导致对观察者及其依赖对象的级联更新。此外,不定义或维护良好的依赖性标准通常会导致虚假的更新,这可能很难跟踪。 这个问题因为简单的更新协议没有提供关于主题中发生了什么变化的细节而更加严重。如果没有额外的协议来帮助观察者发现变化,他们可能会被迫努力推断变化。 “ 他们还说,正在实施中: 避免特定于观察者的更新协议:推拉模型。观察者模式的实现通常让主题广播关于更改的附加信息。主题将此信息作为要更新的参数传递。信息量可能有很大的差异。 在一个极端,我们称之为推模型,无论观察者是否想要,主题都会向他们发送关于变更的详细信息。另一个极端是pull模型;主题只发送最少量的通知,然后观察者明确地询问细节。 拉模型强调受试者对观察者的无知,而推模型则假设受试者对观察者的需求有所了解。推送模型可能会降低观察者的可重用性,因为主题类对观察者类做出的假设可能并不总是正确的。另一方面,拉模型可能效率低下,因为观察者类必须在没有主题帮助的情况下确定发生了什么变化。 “ |
|
|
2
3
的第二个参数
|