1.
单例模式(Singleton):
单例模式(Singleton):表示一个类只会生成唯一的一个对象。
public class SingletonTest {
public static void main(String[] args){
Singleton singleton = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton == singleton2);
}
}
懒汉模式
class Singleton{
private static Singleton singleton; //静态方法可以调用
private Singleton(){ //构造方法私有, 类外部不可以调用创建对象
}
public static Singleton getInstance(){ //(static)不使用对象,使用类名就可以调用
if(singleton == null){ //多线程时会有错,要注意,
synchronized(Singleton.class){
if(singleton == null){ singleton = new Singleton();
}
}
}
return singleton;
}
}
饿汉模式
class Singleton{
private static Singleton singleton = new Singleton(); //静态方法可以调用,类加载时即创建实例
private Singleton(){ //构造方法私有, 类外部不可以调用创建对象
}
public static Singleton getInstance(){ //(static)不使用对象,使用类名就可以调用
return singleton;
}
}
对于单例模式(Singleton)来说,如果在getInstance()方法中生成Singleton实例则可能会产生同步问题,即可能会生成两个不同的对象。