首页 > 代码库 > 单例模式

单例模式

单例模式:

  把构造函数私有化在类内提供本类的静态对象,然后通过静态方法将该对象返回从而保证了在整个的过程中只有一个对象的存在

  饿汉式

 

    在类加载的时候就顺便把本类对象初始化的形式

  懒汉式

 

    先定义好对象,在调用方法的时候在初始化这个对象的方式推迟了初始化。

  区别:

 

    饿汉式由于一上来就初始化对象,可能会导致内存的耗费。

 

    懒汉式会有多线程的并发安全问题

 

 1 public class SingletonDemo {
 2 
 3     @SuppressWarnings("unused")
 4     public static void main(String[] args) {
 5         TaskManager tm = TaskManager.getInstance();
 6     }
 7 
 8 }
 9 
10 class TaskManager {
11 
12     // 任务管理器在整个过程中只有一个---不允许在类外创建对象
13     // 私有化构造函数
14     private TaskManager() {
15     }
16 
17     // 唯一
18     // 在类初始化的时候就把本类的静态对象初始化的形式---饿汉式
19     // 只有一个实例
20     // private static TaskManager tm = new TaskManager();
21     //先定义好兑现,在调用具体方法的时候才去初始化这个对象的方式---懒汉式(会出现多线程并发安全问题)
22     private static TaskManager tm ;
23 
24     public static TaskManager getInstance() {
25         if (tm == null) {
26             tm = new TaskManager();
27         }
28         return tm;
29     }
30 }

 

单例模式