作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式有以下特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承
public class Singleton
{
private static Singleton m_instance = null;
private Singleton() { }
public static Singleton getInstance()
{
if(m_instance==null)
{
m_instance=new Singleton();
}
return m_instance;
}
}
加上多线程的单例模式
public class Singleton
{
private static Singleton m_instance = null;
private static object instanceObj = new object();
private Singleton() { }
public static Singleton getInstance()
{
if(m_instance==null)
{
lock(instanceObj)
{
if(m_instance==null)
{
m_instance=new Singleton();
}
}
}
return m_instance;
}
}