【问题标题】:Can an observable class be constructed as a singleton?可以将可观察类构造为单例吗?
【发布时间】:2011-04-25 22:56:10
【问题描述】:

我正在使用观察者模式(在 Java API 的帮助下)用 Java 编写程序。如果某些 observables 有多个实例,则程序可能会崩溃。我应该将它们实现为单例吗?推荐吗?

【问题讨论】:

    标签: java singleton design-patterns observer-pattern


    【解决方案1】:

    我应该将它们实现为单例吗?推荐吗?

    你当然可以这样做。这是否是一个好主意取决于实际情况。

    • 这些东西在概念上是单例的,还是只是一种试图让错误消失的技巧? (或者换一种说法,真正的问题是你的应用设计有问题吗……)

    • 单例在单元测试方面确实存在问题。这不是一个表演障碍,但它是人们倾向于避免它们的原因之一。

    【讨论】:

      【解决方案2】:

      是的,GoF 将 Singleton 列为 Observer 的相关模式(与 Mediator 一起):

      ChangeManager 可以使用 Singleton 模式使其独一无二且可全局访问。

      ChangeManager 在示例代码中是他们的 Observable。

      每当持久性单元发生相关更改时,我都使用 Singleton Observable (here) 来更新 GUI。该程序不会崩溃,但如果有更多实例,它将无法按预期运行。

      【讨论】:

        【解决方案3】:

        我之前做过,没有任何问题,因为我使用了单例。 该模式可以使用它。

        【讨论】:

          猜你喜欢
          • 2011-06-17
          • 1970-01-01
          • 1970-01-01
          • 2021-06-07
          • 1970-01-01
          • 2011-01-07
          • 2012-05-01
          • 2016-02-07
          • 2020-11-20
          相关资源
          最近更新 更多