Java 设计模式 -- 单例模式
声明: 本文根据慕课网汤小洋老师的精品课程整理来的: 慕课网 https://www.imooc.com/video/1772
什么是设计模式 (Design Pattern)?
设计模式是一套被反复使用, 多数人知晓的, 经过分类编目的, 代码设计经验的总结.
什么情况下使用单例模式?
有些对象我们只需要一个, 比如: 配置文件, 工具类, 线程池, 缓存, 日志对象等, 这种情况下我们要保证整个应用中某个实例有且仅有一个, 如果创造出多个实例就会导致很多问题, 比如: 占用很多资源, 结果不一致等.
单例模式的作用?
保证整个应用程序中某个实例有且仅有一个.
单例模式类型有几种?
1. 饿汉模式
2. 懒汉模式
单例模式之饿汉模式的实现方式?
1. 将构造方法私有化, 不允许外界直接构造对象.
2. 创建类的唯一实例, 使用 private static 修饰.
3. 提供一个用于获取实例的方法, 使用 public static 修饰.
- public class Singleton {
- //1. 将构造方法私有化, 不允许外界直接构造对象.
- private Singleton(){
- }
- //2. 创建类的唯一实例, 使用 private static 修饰
- private static Singleton instance = new Singleton();
- //3. 提供一个用于获取实例的方法, 使用 public static 修饰
- public static Singleton getInstance(){
- return instance;
- }
- }
单例模式之懒汉模式的实现方式?
1. 将构造方法私有化, 不允许外界直接构造对象.
2. 声明类的唯一实例, 使用 private static 修饰.
3. 提供一个用于获取实例的方法, 使用 public static 修饰.
- public class Singleton2 {
- //1. 将构造方法私有化, 不允许外边直接创建对象
- private Singleton2(){
- }
- //2. 声明类的唯一实例, 使用 private static 修饰
- private static Singleton2 instance;
- //3. 提供一个用于获取实例的方法, 使用 public static 修饰
- public static Singleton2 getInstance(){
- if(instance == null){
- instance = new Singleton2();
- }
- return instance;
- }
- }
饿汉模式和懒汉模式的区别?
饿汉模式的特点是: 加载类时比较慢, 因为在加载类时就创建对象, 但运行时获取对象的速度比较快, 因为对象已经创建好了, 线程安全.
懒汉模式的特点是: 加载类时比较快, 因为在加载类时只是声明对象, 但运行时获取对象的速度比较慢, 因为要创建对象, 线程不安全.
来源: https://www.cnblogs.com/wk-missQ1/p/12286789.html