【发布时间】:2008-10-29 18:44:57
【问题描述】:
我的一个朋友最近在一次工作面试中被问到标准单例和单例单例之间的区别。我以前从未听说过这个词,简单的谷歌搜索不会返回任何有意义的结果。
我的朋友建议它是一个构造函数是公共的但所有成员都是静态的对象。这对我来说似乎有点傻,因为它只是一个根本不需要构造函数的静态对象。
有没有人对单例有更好的定义?与标准单例相比,它有用吗?
【问题讨论】:
我的一个朋友最近在一次工作面试中被问到标准单例和单例单例之间的区别。我以前从未听说过这个词,简单的谷歌搜索不会返回任何有意义的结果。
我的朋友建议它是一个构造函数是公共的但所有成员都是静态的对象。这对我来说似乎有点傻,因为它只是一个根本不需要构造函数的静态对象。
有没有人对单例有更好的定义?与标准单例相比,它有用吗?
【问题讨论】:
我想他们实际上是指“Monostate”。我不会详细介绍它们,因为它们现在很容易通过 Google 搜索(以及与 Singletons 的区别的讨论)。
但是,我要说的是,Monostates 往往至少有所有相同的问题和 Singletons,应该尽可能避免(考虑其他方法,例如Parameterise From Above,或在适当的情况下依赖注入)。
【讨论】:
我知道可以修改“单例”以支持 n 个实例,其中 n 是一个固定数字。但是,我了解到这被称为 multiplton 或 multiton(我忘记了确切的名称,但它与那个相似)。可能是面试官想要达到这样一个点,即您可以使用非常类似于 Singleton 模式的东西来实现对象的 n 个实例。但如果是这样的话,那就太尴尬了。
【讨论】:
“单例”(带引号)在谷歌上恰好有一个命中,所以我将其解析为平台中立的 DotNet 框架中使用的单例,而不是“Java 单例”或“C++ 单例”。
对不起,忍不住:)
【讨论】:
我以前从未听说过这个术语,但我想它用来指代只允许创建一个实例的单例。 (一般的单例不需要,它也可以给出有限数量的实例)。
要么是那个,要么是单例的单例......
【讨论】: