【发布时间】:2011-04-25 22:56:10
【问题描述】:
我正在使用观察者模式(在 Java API 的帮助下)用 Java 编写程序。如果某些 observables 有多个实例,则程序可能会崩溃。我应该将它们实现为单例吗?推荐吗?
【问题讨论】:
标签: java singleton design-patterns observer-pattern
我正在使用观察者模式(在 Java API 的帮助下)用 Java 编写程序。如果某些 observables 有多个实例,则程序可能会崩溃。我应该将它们实现为单例吗?推荐吗?
【问题讨论】:
标签: java singleton design-patterns observer-pattern
我应该将它们实现为单例吗?推荐吗?
你当然可以这样做。这是否是一个好主意取决于实际情况。
这些东西在概念上是单例的,还是只是一种试图让错误消失的技巧? (或者换一种说法,真正的问题是你的应用设计有问题吗……)
单例在单元测试方面确实存在问题。这不是一个表演障碍,但它是人们倾向于避免它们的原因之一。
【讨论】:
是的,GoF 将 Singleton 列为 Observer 的相关模式(与 Mediator 一起):
ChangeManager 可以使用 Singleton 模式使其独一无二且可全局访问。
ChangeManager 在示例代码中是他们的 Observable。
每当持久性单元发生相关更改时,我都使用 Singleton Observable (here) 来更新 GUI。该程序不会崩溃,但如果有更多实例,它将无法按预期运行。
【讨论】:
我之前做过,没有任何问题,因为我使用了单例。 该模式可以使用它。
【讨论】: