• Java中单例模式


    什么是单例模式

    1. 构造方法私有化
    2. 静态属性指向实例
    3. public static的 getInstance方法,返回第二步的静态属性

    饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。

    1. package charactor;
    2. public class GiantDragon {
    3. //私有化构造方法使得该类无法在外部通过new 进行实例化
    4. private GiantDragon(){
    5. }
    6. //准备一个类属性,指向一个实例化对象。 因为是类属性,所以只有一个
    7. private static GiantDragon instance = new GiantDragon();
    8. //public static 方法,提供给调用者获取12行定义的对象
    9. public static GiantDragon getInstance(){
    10. return instance;
    11. }
    12. }

    1. package charactor;
    2. public class TestGiantDragon {
    3. public static void main(String[] args) {
    4. //通过new实例化会报错
    5. // GiantDragon g = new GiantDragon();
    6. //只能通过getInstance得到对象
    7. GiantDragon g1 = GiantDragon.getInstance();
    8. GiantDragon g2 = GiantDragon.getInstance();
    9. GiantDragon g3 = GiantDragon.getInstance();
    10. //都是同一个对象
    11. System.out.println(g1==g2);
    12. System.out.println(g1==g3);
    13. }
    14. }

     懒汉式单例模式与饿汉式单例模式不同,只有在调用getInstance的时候,才会创建实例

    1. package charactor;
    2. public class GiantDragon {
    3. //私有化构造方法使得该类无法在外部通过new 进行实例化
    4. private GiantDragon(){
    5. }
    6. //准备一个类属性,用于指向一个实例化对象,但是暂时指向null
    7. private static GiantDragon instance;
    8. //public static 方法,返回实例对象
    9. public static GiantDragon getInstance(){
    10. //第一次访问的时候,发现instance没有指向任何对象,这时实例化一个对象
    11. if(instance == null){
    12. instance = new GiantDragon();
    13. }
    14. //返回 instance指向的对象
    15. return instance;
    16. }
    17. }

  • 相关阅读:
    IDEA—java: 常量字符串过长问题解决
    【JWT】解密JWT:让您的Web应用程序更安全、更高效的神秘令牌
    记录一次较为完整的Jenkins发布流程
    Docker部署
    高效接口重试机制的实现
    chargpt: 用纯c 写一9*9数独程序
    uniapp 引入并使用外部字体
    layui视频上传,文件上传前条件验证,视频大小,视频时长判断
    聊聊Redis sentinel 机制
    数据库实验三 数据查询二
  • 原文地址:https://blog.csdn.net/m0_72805195/article/details/134280078