单例模式(singleton)是一种重要的设计模式。单例模式属于对象创建型模式,顾名思义,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
它的特点有:1、该类只能有一个实例;2、它必须自行创建这个实例;3、它必须自行向整个系统提供这个实例。
下面使用Java实现的单例模式的代码,提供了两种实现的方法:
//单例模式的实现
package single;
class SingleInstance {
private static SingleInstance instance = new SingleInstance();
private SingleInstance()
{
value = 5;
}
private int value;
public static SingleInstance getInstance ()
{
return instance;
}
public void setValue (int val)
{
value = val;
}
public int getValue ()
{
return value;
}
}
class SingleInstance2
{
private static SingleInstance2 m_instance = null;
private SingleInstance2()
{
value = 5;
}
private int value;
synchronized public static SingleInstance2 getInstance()
{
if (m_instance == null)
{
m_instance = new SingleInstance2();
}
return m_instance;
}
public void setValue (int val)
{
value = val;
}
public int getValue ()
{
return value;
}
}
class Test
{
public static void main (String[] args)
{
SingleInstance si1 = SingleInstance.getInstance();
//ERROR: The constructor SingleInstance() is not visible
//SingleInstance si2 = new SingleInstance();
SingleInstance si2 = SingleInstance.getInstance();
si1.setValue(124);
System.out.println(si2.getValue());
SingleInstance2 si3 = SingleInstance2.getInstance();
SingleInstance2 si4 = SingleInstance2.getInstance();
si3.setValue(34);
System.out.println(si4.getValue());
}
}