单例模式:一个类只能有一个实例对象。这样就决定了它有以下几个特点。
- 不能被继承,那得用
sealed
修饰类; - 将构造函数隐藏起来,
private
构造函数; - 公有静态方法创建单一实例;
- 为了保证多线程情况下的单一实例原则,还得加个线程锁;
简单代码实现如下:
public sealed class Singletion
{
private static Singletion _singletion = null;
// 线程锁辅助对象
private static readonly object _lockObj = new object();
private Singletion()
{
}
public static Singletion Instance()
{
// 保证线程安全,多线程情况下只有一个对象实例
if (_singletion == null)
{
lock(_lockObj)
{
_singletion = new Singletion();
}
}
return _singletion;
}
}