1

现在我遇到了观察者/观察者模式,我让观察者通知我所有的观察者。Observer 都实现了 Observer 接口,而 Observable 扩展了 Observable。我想我正在尝试填补我在接口方面的知识空白。我理解抽象类的意义以及它们是如何工作的,但是接口一直很棘手。对于接口,我知道它们充当模板,如果您实现一个模板,那么您需要从接口添加所有方法。我认为这纯粹是为了在您的项目中提供组织帮助。

但是,对于这种 Observer/Observable 案例,我不明白在实现 Observer 的对象中如何调用 update() 函数。与 Observable 的唯一链接是您必须调用 addObserver() 来添加 Observer,然后将其存储在一个列表中,并添加其他 Observer。但在那之后,如何在每个 Observer 上调用 update() 呢?一旦我调用 setChanged() 然后 notifyObservers(),Observable 是否只是通过观察者列表并调用observer.update() 吗?这是有道理的,但实现比我想象的要隐藏得多。

我把它放在观察者模式的上下文中,但它确实适用于任何事情。我注意到几乎所有基于事件的事物都使用接口。这是因为可以保证 Object 将具有随后调用的函数吗?

4

2 回答 2

3

我理解抽象类的意义以及它们是如何工作的

那么你就理解了接口的 95%。接口与抽象类几乎相同,只是接口不能包含任何具体的方法实现。

这是因为可以保证 Object 将具有随后调用的函数吗?

是的,这是完全正确的。

于 2012-06-19T15:04:50.007 回答
2

是的。一个接口定义了一个契约。所有实现接口的类都必须遵守这个约定。当你想观察一个 Observable 时,你需要做的就是遵守 Observer 的约定:实现 Observer 接口,从而拥有一个可以被 Observable 调用的更新方法。

Observer 的具体类型与 Observable 无关。使用接口非常方便,因为它允许任何类型的对象观察 Observable,只要它实现了 Observer 接口。你不需要有任何特定的具体类型,也不需要扩展任何特定的类来观察 Observable。

于 2012-06-19T15:08:58.987 回答