单例模式与类名静态方法调用的区别

区别是:单例模式属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。

单例模式与类名静态方法调用的区别-Worktile社区

单例模式

单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)

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

数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。

单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”

Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”

静态方法

静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能调用静态变量。若类的方法前加了static关键字,则该方法称为静态方法,反之为非静态方法。

静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。调用一个被定义为static的方法,可以通过在它前面加上这个类的名称,也可以像调用非静态方法一样通过类对象调用。

实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。

类的静态方法,静态变量是在类装载的时候装载的。但是要特别注意,类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以建议尽量少用静态变量。尽量在静态方法中使用内部变量。

延伸阅读:

单例模式动机

对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行少数化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源;如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此有时确保系统中某个对象的少数性即一个类只能有一个实例非常重要。

如何保证一个类只有一个实例并且这个实例易于被访问呢?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。一个更好的解决办法是让类自身负责保存它的少数实例。这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法。这就是单例模式的模式动机。

文章标题:单例模式与类名静态方法调用的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38057

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月13日 下午10:59
下一篇 2023年2月13日 下午11:01

相关推荐

  • Go语言适合干什么

    go语言适合做以下4个方面工作:1、服务器端开发;2、服务器编程语言;3、网络编程;4、内存数据库和云平台领域开发。其中,服务器端开发主要指开发“大型软件”,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。 一、服务器端开发 go语言的服务器端开发是用来开发“大型软件”的,适…

    2023年7月27日
    48700
  • c语言中,if语句和条件运算符有什么区别

    摘要:C语言中的if 语句和条件运算符均用于根据条件执行不同代码路径。它们的核心区别在于语法结构和适用场景。1、if 语句是一种控制流语句,允许根据条件的真假执行相应代码块。2、条件运算符是一种三元运算符,形式为`条件 ? 表达式1 : 表达式2`,允许在表达式内进行条件选择。3、if 语句更适合执…

    2023年11月16日
    43000
  • 「erlang/otp」的「otp」是什么意思

    Erlang/OTP是一种强大的编程语言和开发平台,常用于构建高可用、分布式、容错应用程序。OTP,也就是Open Telecom Platform,是Erlang/OTP的核心库之一,提供了许多可重用的代码和工具,以简化开发过程并提高应用程序的质量。 Erlang/OTP是一种强大的编程语言和开发…

    2023年3月1日
    1.0K00
  • 如何应对组织文化和价值观的冲突

    应对组织文化和价值观的冲突需采取以下几个主要步骤:1、识别和分析冲突;2、推动开放和诚实的沟通;3、寻找共同价值观和目标;4、制定和执行冲突解决策略;5、建立持续监测和评估机制。其中,推动开放和诚实的沟通是关键环节,因为沟通能够帮助组织成员理解彼此的观点和需求,从而找到合适的解决方案。整体上,管理组…

    2023年8月21日
    69800
  • 如何提高项目采购成本管理

    项目采购成本管理是指在项目实施过程中对采购活动造成经费开支的计划、估算、预算编制、控制、支付以及整体成本控制等过程的综合管理。要提高项目采购成本管理效率,可以通过制定明确的采购策略、建立工作分解结构(WBS)、采用专业的采购管理软件、增强供应链协同、施行严格的成本控制和评估机制。其中,制定明确的采购…

    2024年4月10日
    10000
  • oa单是什么意思

    OA单是指办公自动化系统中生成的订单,通常用于企业内部审批流程和文档管理。这些文件或表单在组织内部流转,用以执行和记录决策、采购、费用报销、人事管理等业务活动。OA单的电子化管理有助于提高工作效率和透明度,特别是在审批流程中,能够实现各级管理人员对流程的即时监控和控制。 在OA单的使用过程中,它的优…

    2024年1月11日
    47400
  • project 怎么做项目管理

    在使用Project做项目管理时,主要有以下步骤:1、创建项目;2、建立工作流程;3、分配任务;4、跟踪进度;5、分析报告;6、整合和反馈;其中,创建项目是开始新的项目管理任务,建立工作流程是对项目整体的规划。在文件菜单中选择“新建”,然后在弹出的窗口中输入项目的基本信息,如项目名称、开始日期和结束…

    2023年7月11日
    1.1K00
  • oa系统怎么样

    OA系统,被誉为高效办公的关键工具。其主要优势是提升办公自动化水平、加强数据管理、促进信息共享、优化流程管理、增强协同作业、实时监管以及节约成本与时间。针对OA系统的有效性,一款出色的系统能极大程度上改善组织的内部沟通,提高决策效率。信息共享这一点尤为功不可没,它让员工获得所需资料无需额外时间,极大…

    2024年1月11日
    18500
  • 基于java的图书管理系统设计

    基于Java的图书管理系统设计涉及用户界面布局、数据存储、图书检索、用户管理等要点,其目标在于提供一个用户友好、高效的管理平台。1、图书库存管理机制强调图书的入库、借出、归还和库存管理。2、用户权限与安全性考虑保证了系统的安用性与数据保密性。其中,图书库存管理机制为图书管理系统核心,需实现图书信息的…

    2024年1月9日
    26100
  • Java析构方法是什么

    构造方法负责创建一个Java的类对象,并可以对该对象进行初始化。与此相对应的,其实还有一个方法,可以负责对象的销毁,这个负责对象销毁的方法,就叫做析构方法。在Java中,有一个专门的析构方法,即finalize()方法! 构造方法负责创建一个Java的类对象,并可以对该对象进行初始化。与此相对应的,…

    2023年5月28日
    28700

发表回复

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

400-800-1024

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

分享本页
返回顶部