【发布时间】:2013-05-25 01:43:00
【问题描述】:
这就是我编写单例类的方式。
public class MyClass
{
/// <summary>
/// Singleton
/// </summary>
private static MyClass instance;
/// <summary>
/// Singleton access.
/// </summary>
public static MyClass Instance
{
get
{
if (_instance == null)
{
_instance = new MyClass();
}
return _instance;
}
}
private MyClass() { .... }
}
如何创建可重用的单例模式?
单例模式存在以下挑战。
- 构造函数是
private或protected。 - 基类不能实例化继承类。所以你可以重用一个通用的摘要
MyAbstractSingletonClass。 - 它必须具有本地只读属性才能获取实例。
问题
我在许多类上都使用了这种模式,并且总是必须编写相同的代码。当我需要一个单例时,如何编写可以重用的东西?
【问题讨论】:
-
我想了解您在这里要完成的工作。您是否希望基类了解派生类并将其返回,或者您是否希望基类只是“知道”以某种方式返回从它派生的唯一类?你可以向基类添加一个名为
Initialize(string type)的静态函数,或者告诉基类用什么来初始化单个实例吗?稍微澄清一下您要做什么以及您的限制是什么会有所帮助。 -
@Gjeltema 我编辑我的问题。希望对您有所帮助。
-
是的,确实如此,但 BTownTKD 打败了我,让我输入了答案。 :)
标签: c# design-patterns singleton