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

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

单例模式与类名静态方法调用的区别-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

相关推荐

  • 如果想开发IOS的应用程序,需要准备什么

    如果想开发IOS的应用程序,需要准备什么:1、Mac 电脑;2、Xcode 开发工具;3、Swift 和 Objective-C;4、客户端库;5、apppark。Mac 电脑是指,开发 iOS App 需要在 Mac 电脑上安装 Xcode 开发工具。 一、如果想开发IOS的应用程序,需要准备什么…

    2023年5月9日
    67100
  • it项目管理软件有哪些

    it项目管理软件有:一、PingCode;二、JIRA;三、tracup;四、coding。PingCode是国内软件研发项目管理软件。功能以及解决的问题有:能够支持看板、敏捷等多种项目的管理;管理团队目标,监控单或多项目的进度、管理计划分配资源、管理团队或个人的工作效率。 一、PingCode P…

    2023年3月31日
    30300
  • 移动版oa

    标题:移动版OA系统的优势和挑战 移动版OA系统 *提升工作效率、实现随时随地办公、加强安全管理* 是三个重要的核心优点。移动版OA(Office Automation)系统让员工通过移动设备如手机、平板电脑等连接企业内部的办公网络,进行文件管理、信息传递、协作沟通和业务处理等工作。在众多优势中,提…

    2024年1月11日
    13700
  • 软件开发中的成品开发和定制开发的区别是什么

    软件开发中的成品开发和定制开发的区别是:1、成品;2、半成品;3、APP定制开发。所谓的成品就是软件开发公司以往已经完成开发的APP产品,或软件开发公司开发和市面上已经运营的相同的APP开发就是成品app开发。 一、成品 所谓的成品就是软件开发公司以往已经完成开发的APP产品,或软件开发公司开发和市…

    2023年5月13日
    49100
  • 如何进行有效的员工激励和奖励

    有效的员工激励和奖励体系包括以下几个关键步骤:1、了解员工需求和期望;2、设定清晰明确的目标和标准;3、实施公平的奖励机制;4、提供多元化激励手段;5、定期评估和调整激励方案。其中,实施公平的奖励机制是核心,确保每个员工根据工作绩效和贡献获得相应的回报。员工激励和奖励有助于提高员工的工作满意度和积极…

    2023年8月21日
    47200
  • 什么是scrum方法

    Scrum是一种敏捷开发方法,旨在加速团队的协作和交付。它是一种基于迭代和增量交付的方法,主要应用于软件开发领域。它的核心思想是使团队能够在短时间内交付高质量的成果。Scrum的基本原则是管理和控制复杂的项目,同时提高团队的合作和生产力。 一、什么是Scrum? Scrum是一种敏捷方法,它可以帮助…

    2023年3月2日
    30300
  • oa办公软件特色功能是什么

    特色功能:一、流程审批功能;二、电子公文管理功能;三、信息共享功能;四、会议管理功能;五、日程管理功能;六、人事管理功能;七、项目管理功能;八、知识管理功能。OA办公软件最大的特色功能是流程审批功能,它为企业提供一套规范的流程审批流程。 一、流程审批功能 OA办公软件最大的特色功能是流程审批功能。它…

    2023年5月28日
    25700
  • pc文件管理软件有什么

    pc文件管理软件有:1、Total Commander;2、Dropit;3、TagLyst;4、QTTabBar;5、Directory Opus;6、Adobe Bridge。Total Commander文件管理软件系统,功能强大且应有尽有,行业内非常有名。 一、Total Commander…

    2023年4月20日
    45900
  • 小程序开发好还是APP开发好两者各有哪些优劣势

    小程序开发好还是APP开发好两者各有哪些优劣势:APP能够提供更多的功能,可以更好地实现用户的需求;另外,APP还可以提供更多的离线功能,可以在网络不通的情况下使用。APP软件的开发成本较高,需要独立的开发环境,而且在应用市场上的曝光率较低,不利于用户的发现。 一、APP与小程序有什么区别 1、功能…

    2023年5月10日
    20800
  • 开发管理的目的是什么

    开发管理的目的包括:1、缩短从需求到排期上线的周期;2、了解当前产品线、各个项目的状态和进展、风险、成本;3、自动化的测试技术引入,降低测试成本,提升产品质量;4、自动化运维,快速部署和上线;5、跟踪各个需求的状态等。 1、缩短从需求到排期上线的周期 客户的需求会有很多,我们需要管理客户的不同需求,…

    2022年11月6日
    49100

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部