java基础编程168单例

java基础编程168单例文章目录 java 基础编程 168 单例 单例设计模式 4 1 1 单例模式的结构 4 1 2 单例模式的实现 4 1 2 1 饿汉式 静态变量方式 4 1 2 2 饿汉式 静态代码块方式 4 1 2 3 懒汉式 线程不安全 4 1 2 4 懒汉式 线程安全 4 1 2 5 懒汉式 双重检查锁 4 1 2 6 饿汉式 枚举类 4 3 单例模式存在的问题 4 3 1 序列化反序列化破环单例模式 4

大家好,我是讯享网,很高兴认识大家。



文章目录

    • java基础编程168单例
    • 单例设计模式
      • 4.1.1 单例模式的结构
      • 4.1.2 单例模式的实现
        • 4.1.2.1 饿汉式-静态变量方式
        • 4.1.2.2 饿汉式-静态代码块方式
        • 4.1.2.3 懒汉式-线程不安全
        • 4.1.2.4 懒汉式-线程安全
        • 4.1.2.5 懒汉式-双重检查锁
        • 4.1.2.6 饿汉式—枚举类
    • 4.3 单例模式存在的问题
      • 4.3.1序列化反序列化破环单例模式
      • 4.3.2 反射破环单例模式
    • 4.4 解决单例模式存在的问题
      • 4.4.1 序列化、反序列方式破坏单例模式的解决方法
      • 4.4.2 反射方式激活成功教程单例的解决方法

单例设计模式

提供了一种创建对象的**方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

4.1.1 单例模式的结构

单例模式的主要有以下角色:

  • 单例类。只能创建一个实例的类,即只能创建一个对象。
  • 访问类(也就是测试类),使用单列类

4.1.2 单例模式的实现

 
讯享网 
4.1.2.1 饿汉式-静态变量方式

饿汉式,方式1----静态变量方式

该方式在成员位置声明Singleton类型的静态变量,并创建Singleton类的对象instance。instance对象是随着类的加载而创建的。如果该对象足够大的话,而一直没有使用就会造成内存的浪费。

讯享网
4.1.2.2 饿汉式-静态代码块方式

饿汉式,方式1----静态代码块方式

该方式在成员位置声明Singleton类型的静态变量,而对象的创建是在静态代码块中,也是对着类的加载而创建。所以和饿汉式的方式1基本上一样,当然该方式也存在内存浪费问题。

 
4.1.2.3 懒汉式-线程不安全

懒汉式----方式1----线程不安全

从代码我们可以看出该方式在成员位置声明Singleton类型的静态变量,并没有进行对象的赋值操作,那么什么时候赋值的呢?当调用getInstance()方法获取Singleton类的对象的时候才创建Singleton类的对象,这样就实现了懒加载的效果。但是,如果是多线程环境,会出现线程安全问题。

小讯
上一篇 2024-12-28 21:37
下一篇 2024-12-25 18:08

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3201.html