使用观察者模式,在应用程序的某个点有一个 Object A
,当它的状态改变时通知一些 Observers objects
。所以这是在使用应用程序时发生的:
Object A
已创建。Observers objects
已创建并注册,以便在 Object A
状态更改时收到通知。但是当应用程序重新启动时,我再次需要这个 Object A
存在并且 Observers objects
被通知状态更改。我不知道这种情况通常是如何处理的。我可以在数据库中保留 Object A
和 Observers
,我也可以保留关系,然后使用 ORM
:
Object A
使用 observers
从数据库中检索(使用 ORM
)。Object A
发生更改,则它的 observers
会收到通知并执行其操作。上述解决方案意味着每次observers
的{{1}}注册/取消注册时,Obsect A
和Object A
之间的关系都应该持久更新。也意味着 Observers observers
和 equals
方法应该被覆盖,因为在注销 hashcode
时,我们从数据库中获取 observer
(因此它是一个新的 Object A
,并且Object
是新对象)所以我们使用状态而不是它的地址来识别它们。
其他解决方案可能是在应用程序初始化时将观察对象和观察者对象加载到内存中(并注册 Observers
)并将它们缓存在 observers
中。
哪种设计更好或更常用?