1.懒汉式
1 package DesignPattern; 2 //懒汉式单例实现 3 public class Singleton { 4 // 定义一个变量来存储已经创建好的类实例 5 private static Singleton uniqueInstance = null; 6 // 私有化构造方法 7 private Singleton(){ 8 System.out.print("懒汉单例"); 9 } 10 // 定义一个方法来为客户端提供类实例 11 public static synchronized Singleton getInstance(){ 12 if(uniqueInstance==null){ 13 uniqueInstance = new Singleton(); 14 } 15 return uniqueInstance; 16 } 17 18 }
2.饿汉式
1 package DesignPattern; 2 //饿汉单例 3 public class Singleton2 { 4 // 定义一个变量来存储创建好的类实例,直接在这里创建类实例只能创建一次 5 private static Singleton2 uniqueInstance = new Singleton2(); 6 // 私有化构造方法 7 private Singleton2(){ 8 System.out.print("饿汉单例"); 9 } 10 // 定义一个方法来为客户端提供类实例 11 // 构造方法被私有化了,外部创建不了类实例就没有办法调用这个对象的方法,就实现不了功能调用 12 // 单例模式决定让这个类提供一个方法来返回类的实例 13 // 在方法上加上static,这样就可以直接通过类来调用这个方法,而不需要先得到实例 14 public static Singleton2 getInstance(){ 15 return uniqueInstance; 16 } 17 }
3.调用
1 package DesignPattern; 2 3 public class main { 4 public static void main(String[] args) { 5 Singleton.getInstance(); 6 Singleton2.getInstance(); 7 } 8 }
原文:https://www.cnblogs.com/jingpeng77/p/12956638.html