ash*_*rya 12 language-agnostic singleton design-patterns
什么时候不应该使用单身课,尽管这样做可能很诱人?如果我们列出最常见的"单发性炎症",我们应该注意避免,这将是非常好的.
不要将单例用于可能演变为可倍增资源的东西.
这可能听起来很愚蠢,但如果你宣布一个单身的东西,你就会发表一个非常强烈的声明,它绝对是独一无二的.你正在围绕它构建代码,越来越多.然后,当你发现数千行代码之后它根本不是单例时,你面前有大量的工作,因为所有其他对象都希望WizBang类的"神圣"对象是单例.
典型示例:"此应用程序只有一个数据库连接,因此它是一个单例." - 馊主意.您可能希望将来有多个连接.最好创建一个数据库连接池,并用一个实例填充它.像Singleton一样,但所有其他代码都有可扩展的代码来访问池.
编辑:据我所知,理论上你可以将单例扩展为多个对象.然而,没有真正的生命周期(如汇集/解放),这意味着没有真正的所有权已经分发,即现在的多单身必须是无状态的,以便由不同的方法和线程同时使用.