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

JAVA中的单例模式->懒汉式

一、步骤

1.构造器私有化=>防止直接new
private Cat(String name) {
        System.out.println("构造器被调用");
        this.name = name;
    }

2.类的内部创建对象
private static Cat cat;

3.向外暴露一个静态的公共方法。getInstance
public static Cat getInstance(){
        if (cat == null){
            cat = new Cat("咪咪");
        }
        return cat;
    }

二、代码实现

public class SingleModel02 {
    public static void main(String[] args) {
        Cat cat1 = Cat.getInstance();
        System.out.println(cat1);

        Cat cat2 = Cat.getInstance();
        System.out.println(cat1);
    }
}
class Cat{
    private String name;
    private static Cat cat;
    private int n1 = 999;
    private Cat(String name) {
        System.out.println("构造器被调用");
        this.name = name;
    }
    public static Cat getInstance(){
        if (cat == null){
            cat = new Cat("咪咪");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}

三、饿汉式和懒汉式的区别

饿汉式VS懒汉式
区别:
1.创建对象的时机不同
   饿汉式是在类加载就创建了对象实例
   懒汉式是在使用的时候才创建
2.饿汉式不存在线程安全问题
    懒汉式存在线程安全问题
3.饿汉式存在浪费资源的可能性。懒汉式不会存在这种情况

http://www.kler.cn/a/234460.html

相关文章:

  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • 文献解读-DNAscope: High accuracy small variant calling using machine learning
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • Autosar CP DDS规范导读
  • 【CICD】GitLab Runner 和执行器(Executor
  • 【C++】 list 与 string 基础与实现字符串操作
  • 在 Docker 中启动 ROS2 里的 rivz2 和 rqt 出现错误的解决方法
  • 《Django+React前后端分离项目开发实战:爱计划》 01 项目整体概述
  • DP读书:《openEuler操作系统》(九)从IPC到网卡到卡驱动程序
  • 【FPGA开发】Modelsim和Vivado的使用
  • mysql底层结构
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • 简单介绍算法的基本概念
  • LeetCode Python -8.字符串转整数
  • golang 集成sentry:PostgreSQL
  • 4核8g服务器能支持多少人访问?- 腾讯云
  • 【Rust】——猜数游戏
  • python打印等边三角形
  • 【0257】关于pg内核shared cache invalidation messages (概念篇)
  • 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • 私有化部署一个自己的网盘
  • 【超高效!保护隐私的新方法】针对图像到图像(l2l)生成模型遗忘学习:超高效且不需要重新训练就能从生成模型中移除特定数据
  • 2024 年 5 款适用于免费 iPhone 数据恢复的工具软件
  • 【从Python基础到深度学习】1. Python PyCharm安装及激活
  • AR人脸106240点位检测解决方案