【问题标题】:What are the purposes of other members of a Singleton class besides the instance and its get method?除了实例及其 get 方法之外,Singleton 类的其他成员的用途是什么?
【发布时间】:2017-10-04 02:17:32
【问题描述】:

来自 GoF 的设计模式

参与者

Singleton

  • 定义了一个Instance 操作,允许客户端访问其唯一的实例uniqueinstanceInstance是类操作(即类方法在 Smalltalk 和 C++ 中的静态成员函数)。

  • 可能负责创建自己的唯一实例uniqueinstance

合作

• 客户仅通过Singleton 访问Singleton 实例uniqueinstance Instance 操作。

Singleton类中,uniqueinstance是唯一的实例,Instance()是它的get方法。

其他成员的目的是什么:

  • 方法SingletonOperation(),
  • 方法GetSingletonData(),和
  • 字段singletonData?

谢谢。

【问题讨论】:

    标签: design-patterns singleton gang-of-four


    【解决方案1】:

    没什么特别的,或者说它与 Singleton 无关,你可以删除它或重命名它或任何你喜欢的东西。这只是一个普通的方法,与你的类是 Singleton 无关。

    【讨论】:

    • 另一方面,如果书中没有显示额外的方法和字段,那么读者可能会怀疑是否允许单例具有实例方法和字段。
    • @jaco0646 你说得有道理,但他们可以用不同的方式命名它,这样他们就不会混淆任何人,例如(myMethod() 或其他)。
    【解决方案2】:

    图中的附加方法和字段表明允许单例包含状态和行为;即单例不仅仅是常量。此外,单例用于子类化,这是一个经常被忽视的特性,尽管 GoF 多次提到它。

    在以下情况下使用单例模式……唯一的实例应该可以通过子类化进行扩展,并且客户端应该能够使用扩展实例而无需修改其代码。

    因此还显示了其他方法以表明单例可能是多态的。

    单例类 可以被子类化,并且很容易用实例配置应用程序 这个扩展类的。您可以使用实例配置应用程序 运行时需要的类。

    本书继续描述了实现这种配置的多种方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2017-01-14
      相关资源
      最近更新 更多