懒汉式单例模式和饿汉式单例模式

单例模式测试类

 1 package finalsingleton;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5         System.out.println(HungrySingleton.get());
 6         System.out.println(HungrySingleton.get());
 7         System.out.println(HungrySingleton.get());
 8         System.out.println(HungrySingleton.get());
 9 
10         System.out.println("懒汉。。。。。。。。。。。");
11         System.out.println(LazySingleton.get());
12         System.out.println(LazySingleton.get());
13         System.out.println(LazySingleton.get());
14         System.out.println(LazySingleton.get());
15         System.out.println(LazySingleton.get());
16     }
17 }

饿汉式单例模式

 1 package finalsingleton;
 2 /**
 3  * 饿汉式单例模式
 4  * @author likainian
 5  *    1784186573@qq.com
 6  */
 7 public class HungrySingleton {
 8     //1.私有的不能被从新赋值的静态的成员变量
 9     private final static HungrySingleton hun = new HungrySingleton();
10     //2.私有化构造器,其他类不能再外部创建
11     private HungrySingleton() {
12     }
13     //3.公共的静态方法,其他类能得到这个唯一实例
14     public static HungrySingleton get() {
15         return hun;
16     }
17 }

懒汉式单例模式

package finalsingleton;
/**
 * 懒汉式单例模式
 * @author likainian
 *    1784186573@qq.com
 */
public class LazySingleton {
    //1.私有的静态的成员变量,需要赋值,不能final修饰
    private static LazySingleton onlyone;
    //2.私有化构造器
    private LazySingleton() {
    }
    //3.公共的静态方法,用来获得这个实例
    public static LazySingleton get() {
        if(onlyone==null){
            onlyone=new LazySingleton();
        }
        return onlyone;
    }
}
原文地址:https://www.cnblogs.com/String-likainian/p/5844438.html