1.单例模式
public class SingletonTest
{
public static void main(String[] args)
{
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
}
}
class Singleton
{
//返回生成的对象的属性
private static Singleton singleton = new Singleton();
//创建私有构造方法的目的,防止外部自由创建该类的实例
private Singleton()
{
}
public static Singleton getInstance()
{
return singleton;
}
}
输出结果为true,表示两者的引用地址相同,为同一个对象
还有一种写法,但下面的写法在多线程时,可能不是单例
public class SingletonTest2
{
public static void main(String[] args)
{
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
}
}
class Singleton
{
//返回生成的对象的属性
private static Singleton singleton = null;
//这种方式创建的单例不好,因为在面向多线程编程的时候可能不是单例
//创建私有构造方法的目的,防止外部自由创建该类的实例
private Singleton()
{
}
public static Singleton getInstance()
{
if(null == singleton)
{
singleton = new Singleton();
}
return singleton;
}
}