单例模式都用在什么地方

单例模式都用在:1、Windows的Task Manager;2、windows的Recycle Bin;3、网站的计数器;4、应用程序的日志应用;5、Web应用的配置对象的读取;6、数据库连接池的设计等。Windows的Task Manager(任务管理器)就是很典型的单例模式。

一、单例模式的常见应用场景

1、Windows的Task Manager(任务管理器)就是很典型的单例模式。

2、windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。

3、网站的计数器,一般也是采用单例模式实现,否则难以同步。

4、应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。

5、Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源。

6、数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因为何用单例模式来维护,就可以大大降低这种损耗。

7、多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制。

8、操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文件系统。

9、HttpApplication 也是单位例的典型应用。

二、什么是单例模式

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一。

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的少数实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的少数实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个少数实例毫无意义。

延伸阅读

实现方式

通常单例模式在Java语言中,有两种构建方式:

  • 懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。
  • 懒汉式—线程安全:加上synchronize之类保证线程安全的基础上的懒汉模式,相对性能很低,大部分时间并不需要同步
  • 饿汉方式。指全局的单例实例在类装载时构建。
  • 双检锁式。在懒汉式基础上利用synchronize关键字和volatile关键字确保名列前茅次创建时没有线程间竞争而产生多个实例,仅名列前茅次创建时同步,性能相对较高
  • 登记式。作为创建类的全局属性存在,创建类被装载时创建
  • 枚举。java中枚举类本身也是一种单例模式

优缺点

优点

一、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问少数实例。

二、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点

一、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

二、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

三、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

文章标题:单例模式都用在什么地方,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/48838

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年4月7日 下午4:13
下一篇 2023年4月7日 下午4:34

相关推荐

  • 项目管理到底要做什么

    项目管理核心职责包括1、设定和维护项目目标、2、组织和规划资源、3、领导项目团队、4、确保时间、成本和质量控制、5、风险管理和问题解决、6、沟通和利益相关者协调。在这些要点中,组织和规划资源 是项目管理中的关键要素,它涉及到项目成功的基本条件,贯穿项目的始终,包括人力资源、资金、时间和物资的合理配置…

    2024年1月8日
    22300
  • 为什么软件测试需要使用到Linux

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。和咱们经常接触的Windows同属于操作系统。Linux作为使用得越来越多的搭配服务器的系统,它成为了不管是测试还是运维还是开发,都必须会的内容。 一、Linux简…

    2023年6月7日
    56800
  • 优秀项目经理如何管理项目

    项目管理是一门涉及规划、组织、指挥、协调和控制资源的技术与艺术。优秀项目经理通过制定清晰目标、保持良好沟通、持续跟踪进度、管理风险、以及确保项目质量和成本控制来管理项目。这些元素是项目成功的关键。其中,保持良好沟通尤其重要,因为通过有效沟通,项目经理可以确保团队内部信息流通无阻,同时与项目相关各方,…

    2024年4月10日
    5600
  • 看板对项目管理的好处有哪些

    看板对项目管理的好处有:1、多功能性;2、持续改进;3、响应能力;4、产量增加;5、赋权团队;6、产品更完美。多功能性在于看板背后的中心思想是通过视觉信号进行交流,视觉信号的好处涉及行业和职称,使团队成员和项目可以轻松地、跨职能地无缝移动。 1、多功能性 看板背后的中心思想是通过视觉信号进行交流,视…

    2023年1月6日
    54100
  • 华勤oa办公系统

    标题:华勤OA办公系统的优势分析及应用实践 解决了企业信息化管理中的诸多问题:1、办公自动化、2、信息资源共享、3、工作流程标准化。特别是在工作流程标准化环节,华勤OA办公系统提升了业务流转效率,通过电子化工作流出台,明确了任务分配至执行的每个步骤,降低了手工操作的错误率和流程耗时。 一、办公自动化…

    2024年1月17日
    19400
  • java中的::是什么意思

    在JAVA 8 中,可以通过 “::” 关键字来访问类的构造方法,对象方法,静态方法。一般有下面几种用法。访问静态方法 // 使用方法: 如 Integer::parseInt。访问对象方法 // 使用方法:,如 String::substring。访问构造方法 // 使用方法:如 User::ne…

    2023年1月30日
    1.6K00
  • 新项目如何进行供应商管理

    对于新项目而言,进行有效的供应商管理是关键环节之一。有效的供应商管理策略包括了选择合适的供应商、建立强有力的沟通渠道、持续的性能评估以及风险管理等。在这些策略中,选择合适的供应商尤为关键,因为它是构建项目成功的基石。选择时,不仅要考虑价格、质量、交货时间等因素,还需要考虑供应商的信誉、技术能力、服务…

    2024年4月11日
    7300
  • 文心一言对于品牌传播的意义何在

    摘要:文心一言是品牌传播中的重要策略,意味着品牌理念、价值观的核心表达。在当前媒体环境下,一言的作用格外显著,对品牌建设和市场传播有多维度的影响。文心一言的核心观点包括:1、品牌识别度提升、2、顾客信任构建、3、品牌形象塑造、4、传播效率增强、5、危机应对策略。一言之中蕴含的是品牌智慧和精髓,简洁有…

    2023年11月29日
    33100
  • 计算机服务流程有哪些

    计算机服务流程有:1、活动管理;2、事件管理;3、请求履行;4、访问管理;5、问题管理。活动管理是指,关于在整个生命周期中管理事件,其中包括检测事件、监视更改状态以及对事件进行排序和分类以确定最佳行动方案。 1、活动管理 顾名思义,它是关于在整个生命周期中管理事件,其中包括检测事件、监视更改状态以及…

    2023年3月5日
    53800
  • JAVA数据库和本地数据库有啥区别

    JAVA数据库和本地数据库只是连接配置上有区别,在程序上没区别。本地数据库,本地指的是在本地电脑上的数据,而java数据库指的是类似mysql、Oracle等等服务器的数据。链接本地的用127.0.0.1 链接外网的直接用IP,而在程序上没有任何区别。 JAVA数据库和本地数据库只是连接配置上有区别…

    2023年2月13日
    59000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部