单例模式是二十多种设计模式中最为常见且简单的模式(没有之一),也有面试时要求考察单例模式,虽然简单,但也有不少地
方能够成为考察点。下面附上5种写法,均摘自《剑指offer》。
1.单线程环境默认单例的写法
public sealed class Singleton1
{
private Singleton1()
{
}
private static Singleton1 instance = null;
public static Singleton1 Instance
{
get {
if (instance == null)
instance = new Singleton1();
return instance;
}
}
}
思路:私有化构造函数,私有化一个类级别的本类实例,CTRL R+E得到get set方法,删除set方法,判实例是否为空,是则
初始化,最后返回实例。
问题:单线程下是没毛病的,多线程情况的话就会有多个线程同时访问时访问,那么判断instance==null这句代码就不稳定