单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
通常我们可以让一个全局变量是的一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建(私有的构造方法),并且提供一个访问函数(GetInstance)。
示例代码:
public class SingletonTest {
private static SingletonTest singleton;
private SingletonTest()
{
}
public static SingletonTest GetInstance()
{
if(singleton==null)
{
Object obj = new Object();
lock(obj)//锁
{
singleton = new SingletonTest();
}
}
return singleton;
}
}
测试类:
public static void main(String[] args) {
// TODO code application logic here
//s1和s2其实是同一个实例
SingletonTest s1 = SingletonTest.GetInstance();
SingletonTest s2 = SingletonTest.GetInstance();
if(s1==s2)
{
System.out.println("s1 equals s2");
}else{
System.out.println("s1 not equals s2");
}
}
run:
s1 equals s2