单例模式(singleton)顾名思义,就是只有一个实例。
作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
public class Client {
public static void main(String[] args)
{
SingletonTest s1 = SingletonTest.getSingleton();
SingletonTest s2 = SingletonTest.getSingleton();
System.out.println(s1);
System.out.println(s2);
}
}
public static void main(String[] args)
{
SingletonTest s1 = SingletonTest.getSingleton();
SingletonTest s2 = SingletonTest.getSingleton();
System.out.println(s1);
System.out.println(s2);
}
}
public class SingletonTest {
private static SingletonTest single;
private SingletonTest()
{
}
public static SingletonTest getSingleton()
{
if(single == null)
{
single = new SingletonTest();
}
return single;
}
}
private static SingletonTest single;
private SingletonTest()
{
}
public static SingletonTest getSingleton()
{
if(single == null)
{
single = new SingletonTest();
}
return single;
}
}