观察者模式 - 如何处理观察者和观察者对象的持久性

时间:2021-03-10 12:23:02

标签: database spring-boot orm observer-pattern

使用观察者模式,在应用程序的某个点有一个 Object A,当它的状态改变时通知一些 Observers objects。所以这是在使用应用程序时发生的:

  1. Object A 已创建。
  2. Observers objects 已创建并注册,以便在 Object A 状态更改时收到通知。

但是当应用程序重新启动时,我再次需要这个 Object A 存在并且 Observers objects 被通知状态更改。我不知道这种情况通常是如何处理的。我可以在数据库中保留 Object AObservers,我也可以保留关系,然后使用 ORM:

  1. Object A 使用 observers 从数据库中检索(使用 ORM)。
  2. 如果 Object A 发生更改,则它的 observers 会收到通知并执行其操作。

上述解决方案意味着每次observers的{​​{1}}注册/取消注册时,Obsect AObject A之间的关系都应该持久更新。也意味着 Observers observersequals 方法应该被覆盖,因为在注销 hashcode 时,我们从数据库中获取 observer(因此它是一个新的 Object A,并且Object 是新对象)所以我们使用状态而不是它的地址来识别它们。

其他解决方案可能是在应用程序初始化时将观察对象和观察者对象加载到内存中(并注册 Observers)并将它们缓存在 observers 中。

哪种设计更好或更常用?

0 个答案:

没有答案