4th*_*ace 12 .net singleton design-patterns interface
在.NET 3.5中,我想创建一个单例接口:
interface ISingleton <T>
{
public static T Instance {get;}
}
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,但我喜欢.有什么建议?
编辑:我只是想知道所有singeltons将有一个名为Instance的类类型的静态属性.它总是在那里.界面将是表达这一点的明确方式.
Mat*_*ker 12
据我所知,接口不能成为Singleton,因为它实际上并不存在.接口是实现必须遵循的合同.因此,实现可以是单例,但接口不能.
虽然我同意其他海报上的单例非常过度使用,但是你的问题的一个可能的解决方案是提供一个抽象基类,其中包含派生单例的类型参数:
public abstract class Singleton<T> where T : Singleton<T>
{
private static T _instance;
public static T Instance
{
get { return _instance; }
protected set { _instance = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
从Singleton派生的任何类都将具有正确类型的静态Instance属性:
public class MySingleton : Singleton<MySingleton>
{
static MySingleton()
{
Instance = new MySingleton();
}
private MySingleton() { }
}
Run Code Online (Sandbox Code Playgroud)
在使用类似的东西之前,你应该考虑是否需要单例,或者你是否更适合使用普通的静态类.
| 归档时间: |
|
| 查看次数: |
13066 次 |
| 最近记录: |