1.单例模式-创建型
2022-04-17 15:34:53 11 举报
AI智能生成
Java单例模式
作者其他创作
大纲/内容
1) 单例模式保证了 系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能2) 当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new3) 单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等)
概述
class Singleton { //1、构造器私有化,外部不能new private Singleton() { } //2、本类内部创建对象实例 private final static Singleton instance = new Singleton(); //3、提供一个公有的静态方法,返回实例对象 public static Singleton getInstance() { return instance; }}
1.1 静态常量
class Singleton { //1、构造器私有化,外部不能new private Singleton() { } //2、静态代码块 private static Singleton instance; static { instance = new Singleton(); } //3、提供一个公有的静态方法,返回实例对象 public static Singleton getInstance() { return instance; }}
1.2 静态代码块
饿汉式
2.1 直接(线程不安全)
2.2 同步方法(线程安全)
2.3 synchroniezd同步代码块(线程安全)
class Singleton { private static volatile Singleton instance; private Singleton() { } //提供一个静态的公有方法,加入双重检查代码,解决线程安全问题,同时解决懒加载问题 public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
2.4 双重校验: synchroniezd同步代码块(volatile + 双重判断)
懒汉式
enum EnumSingleton{ INSTANCE; public EnumSingleton getInstance(){ return INSTANCE; }}
枚举
静态内部类
举例
单例模式
创建型模式
0 条评论
回复 删除
下一页