如何在 C# 中编写一个只返回对象的“相同”实例的类?这实际上是单身还是不同?这在《Effective Java 2nd addition》一书中提到。
我使用 C# 4.0(没有技术障碍)。
是的,这是一个单例模式。您会在此处找到基于我们自己的 Jon Skeet 的 C# 实现的精彩讨论。
如果您的 Singleton 对象的创建成本很高,但不是每次应用程序运行时都使用它,请考虑使用 Lazy。
public sealed class LazySingleton
{
private readonly static Lazy<LazySingleton> instance =
new Lazy<LazySingleton>(() => new LazySingleton() );
private LazySingleton() { }
public static LazySingleton Instance
{
get { return instance.Value; }
}
}
using System;
namespace DesignPatterns
{
public sealed class Singleton
{
private static volatile Singleton instance = null;
private Singleton() { }
public static Singleton Instance
{
get
{
if (instance == null)
Interlocked.CompareExchange(ref instance, new Singleton(), null);
return instance;
}
}
}
}