【发布时间】:2009-05-27 15:43:43
【问题描述】:
在 C++ 中,我知道可以使用模板创建单例基类。它在 Andrei Alexandrescu 的《现代 C++ 设计》一书中进行了描述。
这样的事情可以用Java实现吗?
【问题讨论】:
-
您为什么要这样做? Singleton 基本上是一种反模式,你知道吗?
-
一个原因可能是他想知道如何实例化一个未知类的实例。换句话说,给定类作为参数,请执行以下操作: Object instance = clazz instanceof Singleton ? (单例) clazz.getInstance() : new clazz(); (这当然需要一个可用的无参数构造函数,但这是一个不同的问题)。
-
@Elvian:就像所有事情一样,Singleton 在好的时候是好的,而不是在不好的时候。成为一名优秀程序员的一部分是知道何时以及何时不应用模式以及如果问题不适合现有的解决方案。换句话说,不知道何时正确应用它不是Singleton的错。
-
简短的回答可能是肯定的,但我需要更多关于您正在寻找的内容的详细信息。
-
@Welbog:我同意有时您有充分的理由使用非常本地化的单例(即使在不使用某些控制反转机制的情况下无法对代码进行单元测试),但是“通用单例”对我来说似乎是一个疯狂的想法。为什么不将整个对象及其属性设为公开。更简单,相同的效果(几乎;))
标签: java design-patterns generics templates singleton