现在我遇到了Observer / Observable模式,我的Observable通知了我的所有观察者。 Observvers都实现了Observer接口,而Observable扩展了Observable。我想我正试图填补我对接口的知识差距。我理解抽象类的重点以及它们是如何工作的,但接口却很棘手。对于接口,我知道它们充当模板,如果您实现了接口,则需要从接口添加所有方法。我认为这纯粹是为了您项目中的组织帮助。
使用这个Observer / Observable案例,我不明白如何在实现Observer的对象中调用update()函数。到Observable的唯一链接是你必须调用addObserver()来添加Observer,然后Observer将它存储在列表中并添加其他Observers。但在那之后,如何在每个Observer上调用update()? Observable是否只是逐个通过Observers列表并在调用setChanged()然后调用notifyObservers()时调用observer.update()?这是有道理的,但实施比我想象的更隐蔽。
我把它放在Observer模式的上下文中,但它确实适用于任何事情。我注意到几乎所有基于事件的事物都使用接口。这是因为保证Object将具有随后调用的函数吗?
答案 0 :(得分:3)
我理解抽象类的重点以及它们的工作原理
然后,您有95%的方式来理解界面。接口与抽象类几乎完全相同,除了接口不能包含任何具体方法实现。
这是因为保证Object将具有随后调用的函数吗?
是的,这是完全正确的。
答案 1 :(得分:2)
是。接口定义合同。实现接口的所有类都必须遵守此合同。当你想观察一个Observable时,你需要做的就是遵守一个Observer的契约:实现Observer接口,从而有一个可以被Observable调用的更新方法。
Observer的具体类型与Observable无关。使用接口非常方便,因为它允许任何类型的对象观察Observable,只要它实现Observer接口即可。您不需要具有任何特定的具体类型,也不需要扩展任何特定的类来观察Observable。