单例模式
-
- 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…文章来源:https://uudwc.com/A/ZGdax
单例模式的常见写法文章来源地址https://uudwc.com/A/ZGdax
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