C# C中的单态
我想为创建singleton类收集更多变体。 你能根据你的意见给我提供C语言中最好的创作方式吗 谢谢C# C中的单态,c#,design-patterns,singleton,C#,Design Patterns,Singleton,我想为创建singleton类收集更多变体。 你能根据你的意见给我提供C语言中最好的创作方式吗 谢谢 public sealed class Singleton { Singleton _instance = null; public Singleton Instance { get { if(_instance == null) _instance = new Singleton(
public sealed class Singleton
{
Singleton _instance = null;
public Singleton Instance
{
get
{
if(_instance == null)
_instance = new Singleton();
return _instance;
}
}
// Default private constructor so only we can instanctiate
private Singleton() { }
// Default private static constructor
private static Singleton() { }
}
我在这方面有一个建议,你可能会觉得有用
哦,一般情况下尽量避免使用单例模式,因为它对可测试性等很痛苦:我在这方面有一个建议,您可能会发现它很有用
哦,一般情况下尽量避免使用单例模式,因为它会带来测试性等方面的痛苦:请看这里:
看这里:
哈哈,乔恩,显然,你的文章很有名;-同一篇文章在几秒钟内给出了三个答案。太好了,我一直在关注你的文章,有时会实现版本4和版本5。完全同意除非真的,真的需要,否则应该避免单身。哈哈,乔恩,显然,你的文章是众所周知的;-同一篇文章在几秒钟内给出了三个答案。太好了,我一直在关注你的文章,有时会实现版本4和版本5。完全同意除非真的、真的需要,否则应避免使用Singleton。请注意,这是旧URL-csharpindepth.com上的更新版本是任何更改的最终位置。请注意,这是旧URL-csharpindepth.com上的更新版本是任何更改的最终位置。Mmh。。。听起来好像已经问过了…@Klaus:这个实现不好。。。属性和字段是非静态的。。。你怎么能创建一个实例?@Jon,对,实例应该是静态的。我没注意到。将编辑我的帖子。如果我创建一个单例,这是很少见的,因为我希望有非常可测试的代码,那么我现在就使用Lazy来创建实例。您可以获得线程安全、延迟初始化和简短的代码。但总的来说,避免单身,因为他们是邪恶的。。。听起来好像已经问过了…@Klaus:这个实现不好。。。属性和字段是非静态的。。。你怎么能创建一个实例?@Jon,对,实例应该是静态的。我没注意到。将编辑我的帖子。如果我创建一个单例,这是很少见的,因为我希望有非常可测试的代码,那么我现在就使用Lazy来创建实例。您可以获得线程安全、延迟初始化和简短的代码。但一般来说,避免单身,因为他们是邪恶的。
public sealed class Singleton
{
static readonly Singleton instance=new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}
Singleton()
{
}
public static Singleton Instance
{
get
{
return instance;
}
}
}