【发布时间】:2010-10-21 01:33:04
【问题描述】:
我想设计一个类似于单例的类,该类只有一个主实例,但也可以有多个主实例的克隆。只允许 1 个类创建主实例,其他所有人都可以创建一个克隆。像这样的东西(c#):
class Singleton
{
private static Singleton _mainInstance;
private Singleton() {..}
public void Clone() {..}
public static Singleton MainInstance
{
if (_mainInstance == null)
{
_mainInstance = new Singleton(); // how to secure this for only 1 class?
}
return _mainInstance;
}
}
class MainClass
{
public MainClass()
{
Singleton.MainInstance ....
}
}
MainClass 应该是唯一允许实例化单例的类。在 C++ 中,这可以通过完全隐藏创建逻辑并将 MyClass 作为 Singleton 的朋友来实现。
【问题讨论】:
-
什么是单例的克隆?克隆时相同的对象(通过引用)还是具有相同状态的新对象?如果第一个,你的问题是自我冗余的,如果第二个,不要称它为单例......原型可能吗?