单例模式是指:
这个类只能创建一个实例(构造函数必须是私有的)。
这个类必须自己创建实例。
这个唯一的实例必须供所有其他对象使用。
//饿汉式
public class Singleton {
private Singleton() {}
//初始化单例 但此单例只能在同类中的方法中被调用(private),且不能重新被实例化(final),静态方法只能访问此类其他静态成员(static)
//下面这句代码在类加载时就会被执行
private static final Singleton singleton = new Singleton();
//自己定义实例并供其他对象使用 (static)
public static Singleton getsingle()
{
return singleton;
}
}
懒汉式
public class Singleton
{
private Singleton() {}
//声明一个对象,这个对象只能被同类方法调用(private),且可以改变对象是否被实例化的状态(static)
private static Singleton singleton = null;
public static Singleton getSingleton()
{
if(singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
}
理想的单例模式
public class Singleton
{
private Singleton() {}
//静态内部类在调用时才会被执行
private static class SingletonGet
{
private static final Singleton singleton = new Singleton();
}
public static Singleton getSingleton()
{
return SingletonGet.singleton;
}
}