单例模式
- 1、掌握单例模式的应用场景。
- 1-1、饿汉式单例
- 1-2、懒汉式单例
- 1-2-1、 测试类:
- 1-2-2、 main
- 1-2-3、 控制台结果
- 1-2-4、 改进 加锁 `synchronized `
- 1-2-5、 控制台输出
- 1-2-6、 再改进,使用双检锁,懒汉式双重检查锁定(Lazy initialization with double-checked locking)
- 1-2-7、 控制台输出
- 1-2-7-1 问题一 代码是不是有点臃肿
- 1-2-7-2 问题二为什么使用volitatle关键字
- 1-2-7-2-1 解释一
- 1-2-7-2-1 解释二
定义:
1:单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝只有一个实例,并提供一个全局访问点。
2:隐藏其所有的构造方法:
3:属于创建型模式
1、掌握单例模式的应用场景。
框架中常见的单例 ServletContext、ServletConfig、ApplicationContext…
单例模式的常见写法
1-1、饿汉式单例
package com.tansun.goods.pack;/*** 优点:执行效率高,性能高,没有任何的锁* 缺点:某些情况下,可能会造成内存浪费* @author Administrator*/
public class HungrySingleton {private static final HungrySingleton hungrySingleton = new HungrySingleton();private HungrySingleton() {}public static HungrySingleton getInstance() {return hungrySingleton;}
}
1-2、懒汉式单例
package com.tansun.goods.pack;
/*** @author Administrator* 优点:节省内存* 缺点:线程不安全*/
public class LazySingleton {private static LazySingleton lazySingleton = null;private LazySingleton(){}public static LazySingleton getInstance(){if (lazySingleton == null){lazySingleton = new LazySingleton();}return lazySingleton;}
}
1-2-1、 测试类:
package com.tansun.goods