极简java实现理解单例模式核心

2023-11-06

问:单例模式意义:

在项目中,有的对象只需要存在一个就足够了,多创建对象则会浪费资源,单例模式可以保证项目对象只存在一个,且不会被多次创建。

java实现例子(最少代码):
public class Singleton {
    public static Singleton instance  = new Singleton();
    private Singleton(){
    }
}
问:为什么自己的类里会有一个自己的静态实例?

答:首先因为静态关键字可以保证创建代码只执行一次,其次使用public关键字可以保证直接通过类名访问,比较方便。

问:为什么构造器私有?

答:防止在其他地方实例化新的对象,同时也有标记的功能,在实例化时编译器会报错,提醒程序员该类是单例模式。

问:为什么网络上其他教程里的单例模式中,静态实例的关键字是private,而不是public?而且还有一个获取静态实例的public方法?

答:首先本篇的重点是用最简java代码实现单例模式,且单例模式的核心就是静态实例和构造器私有,只要有这两个存在就可以实现单例。

用关键字private描述静态实例,添加一个获取静态实例的public方法取获取实例,优点比起直接获取实例,使用方法更不容易产生歧义。

方法的存在来有一个原因:
容易针对不同的情况而增加请求对象方式的灵活性(例如懒汉式和饿汉式)。

如下所示:
public class Singleton {  
    private static Singleton instance = new Singleton();  
    private Singleton (){}  
    public static Singleton getInstance() {  
    return instance;  
    }  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

极简java实现理解单例模式核心 的相关文章

随机推荐

  • Google地图现可按照路况给出出行时间

    在 Google Maps 查询出行路线的时候 不管是公交还是自驾 它都会告诉你一个大概的全部行程需要的时间 不过如果你是在下午 5 点左右从北京出发的话 那个时间显然是痴人说梦 由于 Google Maps 本身在很多城市已经有了交通流量
  • 谷粒商城--整合Elasticsearch和商品的上架

    整合Elasticsearch和商品的上架 一 整合ES ES常用概念 索引 类型 文档是什么 倒排索引 相关度分数score的计算 安装ES和Kibana 快速安装 ES kibana 初步检索 cat ES的增删改查 新增文档 put新
  • 第二天-03-安卓手机的入侵实验

    安卓手机入侵实验 要求 电脑主机与手机模拟器或者真机在当前环境下 网络是畅通的 相互之间可以进行通信 如何进行测试网络环境 我们首先需要确定IP linux通过终端命令 ip a 或者 ifconfig windown下 win加r输入cm
  • Apollo使用404错误问题

    在使用spring项目接入携程 apollo 的时候 报了一个错误 Cause status code 404 Could not find config for namespace appId housing102 cluster def
  • 优化基于FPGA的深度卷积神经网络的加速器设计

    英文论文链接 http cadlab cs ucla edu cong slides fpga2015 chen pdf 翻译 卜居 转载请注明出处 http blog csdn net kkk584520 article details
  • 【开发工具】WebStorm 前端开发神器菜鸟必备,全网最稳定靠谱的安装教程 一镜到底、全程图文并茂、通俗易懂!

    个人主页 极客小俊 作者简介 web开发者 设计师 技术分享博主 希望大家多多支持一下 我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 介绍 WebStorm号称最智能的前端开发IDE 适用于前端开发和相关技术的集成开发
  • Unity世界坐标转换屏幕坐标(详解)

    我们先通过简单的操作实现一下基础的UI跟随物体移动的功能 首先我们在场景中建立一个Canvas并且添加一个图片作为按钮 之后我们添加一个3d物体作为跟随目标 效果如下图所示 我们配置一下UICanvas的属性 书写对应的自定义类并添加至UI
  • 【QT实战】第三章 将类中的成员函数放在多线程中执行

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • css3平移、旋转、倾斜、缩放、动画效果的实现

    HTML代码 div class button div div class canResize esdrtgyjikodrtgujiokpsedtgyhij div div class transition div ul li li li
  • Unity优化总结(持续更新)

    工欲善其事 必先利其器 优先利用性能分析工具快速找出性能瓶颈 从瓶颈入手分析性能问题产生原因 可以事半功倍 尽量减少占用的内存 资源体积 和CPU 计算量 首先着重减少总量才能更好的进行后续细节的优化 总量降低后 性能依旧有问题 那么可以考
  • SpringBoot主类解析(四)

    SpringBoot主类 import org springframework boot Banner import org springframework boot SpringApplication import org springf
  • 51 Job招聘数据分析与可视化

    招聘数据分析与可视化 背景 为了分析现有数据行业的招聘情况 抓取2017年3月14日到2017年5月13日发布在51Job上的数据相关招聘职位116273条信息 并从中筛选出职位是数据分析 数据挖掘 文本挖掘 视觉学习 计算广告 数据开发
  • Spring-AOP的基本介绍以及通过先动态代理方式实现

    前言 本篇的Spring AOP系类文章第一篇详细的讲解了Spring AOP的介绍以及通过先动态代理在使用AOP由浅入深更容易理解 个人主页 尘觉主页 https blog csdn net apple 67445472 type blo
  • 警告当当成错误 may be used uninitialized in this function [-Werror=maybe-uninitialized]

    如果是ubuntu20版本 或者gcc版本太高 可能有些警告会当成错误导致编译出错 error may be used uninitialized in this function Werror maybe uninitialized cc
  • 1600*C. Binary String Copying

    https codeforces com problemset problem 1849 C Binary String Copying 洛谷 解析 对于某个区间x y 他排序之后 最左侧的连续0和最右侧的连续1是不影响排序结果的 假设左侧
  • Java7大数据结构

    Java数据结构 简书
  • FISCO BCOS 联盟链Pro搭建

    FISCO BCOS Pro版本 版本说明 FISCO BCOS 3 0支持Pro版本微服务区块链架构 Pro版本FISCO BCOS包含RPC服务 Gateway服务和节点服务 每个服务均可独立部署和扩容 本章通过单机搭建Pro版本2节点
  • 目标检测模型设计准则

    转载 https mp weixin qq com s 5SjQvRqRct6ClpE2eEcdkw 设计高效 高质量的表达性网络架构一直是深度学习领域最重要的研究课题 当今的大多数网络设计策略都集中于如何集成从不同层提取的特征 以及如何设
  • windows系统下安装linux(centos7)虚拟机详细教程(virtualbox环境)

    目录 一 概念 1 1 什么是镜像 1 2 关于镜像的基本概念 二 centos镜像下载 2 1 centos官网下载镜像 2 2 通过其他官网下载镜像 三 下载virtualbox 3 1 为什么要使用virtualbox 3 2 下载v
  • 极简java实现理解单例模式核心

    问 单例模式意义 在项目中 有的对象只需要存在一个就足够了 多创建对象则会浪费资源 单例模式可以保证项目对象只存在一个 且不会被多次创建 java实现例子 最少代码 public class Singleton public static