目录
饿汉模式
懒汉模式
懒汉模式优化
饿汉模式
由名字我们就可以知道 "饿汉" 嘛,就比较急切,在类加载的时候就创建实例:
1. 写一个类,在本类中构造实例,用static修饰,直接创建出来(提供一个现有的实例)
2. 在本类中写一个方法获取到上面的实例
3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象
//饿汉模式:直接 static 一个实例(线程安全) //期望这个类只能有一个实例 public class Demo1 { //只构造一个实例 private static Demo1 instance = new Demo1(); //获取这个实例 public static Demo1 getInstance() { return instance; } //把构造方法设置为私有 外部不能 new 这个类对象 private Demo1(){} }
懒汉模式
由名字我们就可以知道 "懒汉" 嘛,就比较从容~,它是等到有人调用的时候再创建实例:
1. 写一个类,在本类中构造实例,用static修饰,赋值为空(等待有人调用)
2. 在本类中写一个方法获取到上面的实例
3. 将这个类的构造方法设置为私有的,让外部不能 new 这个对象
//懒汉模式: //期望这个类只能有一个实例 public class Demo2 { private static Demo2 instance = null; //获取这个实例 public static Demo2 getInstance() { if (instance == null) { instance = new Demo2(); } return instance; } //把构造方法设置为私有 外部不能 new 这个类对象 private Demo2(){} }