单例设计模式
JavaSE:工厂+代理+单例
单例设计指的是一个类只允许产生一个实例化对象。
思路:a. 对象如何产生?通过类的构造方法
b. 要想限制对象的产生?通过构造方法限制
特点:构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象
分类:a. 饿汉式单例模式
b. 懒汉式单例模式
//饿汉式单例模式:上来就new
class Singleton{
//在类的内部提供私有的实例化对象
private static final Singleton INSTANCE = new Singleton();
//构造方法私有化,外部无法调用构造即外部不能够产生新的实例化对象
private Singleton(){ }
//外部通过get取得实例化对象
public static Singleton getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("helloworld!");
}
}
public class Test{
public static void main(String[] args){
Singleton singleton = null;
singleton = Singleton.getInstance();
singleton.print();
}
}
//懒汉式单例模式:用时再new(双重加锁单例模式)
class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
//表示此时还没有实例化
instance = new Singleton();
return instance;
}
return instance;
}
public void print(){
System.out.println("哈哈哈!");
}
}
public class Test{
public static void main(String[] args) {
Singleton singleton = null;
singleton = Singleton.getInstance();
singleton.print();
}
}