当前位置: 首页 > news >正文

设计模式--单例模式

单例模式的介绍

        单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

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

        单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

需要注意的点:

    每个单例类只能有一个实例

    单例类必须自己创建自己的唯一实例

    单例类必须给所有的其他对象提供这一实例

    单例类的构造方法必须私有    

单例模式的实现

        单例模式有很多实现方法,主要为懒汉式和饿汉式,饿汉式为线程安全的。懒汉式不安全,以下仅仅介绍这两种方式的线程安全的实现方式

懒汉式

   采用双重检查锁+volatile 的形式,不仅保证了线程安全的前提下也提高了性能

public class Singleton  {private volatile static Singleton  singleton;private Singleton (){}public static Singleton getInstance(){if(singleton==null){synchronized (Singleton.class){if(singleton==null){singleton=new Singleton();}}}return singleton;}
}

饿汉式

      这种单例实现方式被称为“饿汉式”,因为它在类加载时就立即创建了实例。这种方式简单且线程安全,但在某些情况下可能会导致资源的浪费,因为实例在创建后可能不会被使用。

public class Singleton1 {//创建 Singleton1 的一个对象private static Singleton1 singleton1 = new Singleton1();//让构造函数为 private,这样该类就不会被实例化private Singleton1(){}//获取唯一可用的对象public static Singleton1 getSingleton1(){return singleton1;}
}

http://www.mrgr.cn/news/50716.html

相关文章:

  • 【ROS2】订阅手柄数据,发布运动命令
  • 太速科技-732-基于3U VPX的AGX orin GPU计算主板
  • 格式化字符串利用手法-一次机会构造栈链getshell
  • 使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期
  • C语言的文件操作【文件读取结束的判定和文件缓冲区】
  • 奉加微PHY6230连续发送数据:相同流程PHY6233没问题但是6230有问题
  • lsd.cpp:139: error: (-213:The function/feature is not implemented)
  • 快速了解红黑树
  • PostgreSQL 可观测性最佳实践
  • 快速理解http的get和post
  • 环形链表相关问题
  • 分布式缓存详解!
  • nginx web代理
  • Docker system
  • “医者仁术”再进化,AI让乳腺癌筛查迎难而上
  • 震撼发布!libcom:上海交大黑科技,一键搞定图像合成,让你的创意秒变现实!
  • 【Docker项目实战】使用Docker部署HumHub社交网络平台
  • unordered_map和unordered_set
  • Java:双列集合
  • Leetcode 1489. 找到最小生成树里的关键边和伪关键边