设计模式学习篇-singleton单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

JAVA单例模式的几种实现方法
1.饿汉式单例类
package pattern.singleton;
//饿汉式单例类.在类初始化时,已经自行实例化 
public class Singleton1 {
    //私有的默认构造子
    private Singleton1() {}
    //已经自行实例化 
    private static final Singleton1 single = new Singleton1();
    //静态工厂方法 
    public static Singleton1 getInstance() {
        return single;
    }
}


2.懒汉式单例类
package pattern.singleton;
//懒汉式单例类.在第一次调用的时候实例化 
public class Singleton2 {
    //私有的默认构造子
    private Singleton2() {}
    
    //注意,这里没有final    
    private static Singleton2 single;
    
    //只实例化一次
    static{
        single = new Singleton2();
    }
    
    //静态工厂方法 
    public synchronized  static Singleton2 getInstance() {
         if (single == null) {  
             single = new Singleton2();
         }  
        return single;
    }
}
枚举类是实现单例的最佳方法:一般我们所做的单例,如果没有在构造函数进行控制,则通过反射 方式可以创建出新的实例来,如果枚举类 这是真正的单例。
枚举类的思想是通过共有的静态的final域为每个枚举常量导出实例的类。枚举相当于单例的泛型化。
单例模式本质:控制实例的数目。

你可能感兴趣的:(Singleton)