getinstance用法作用(rept函数怎么用)

阅读数:275先举例说明:下面是一个例子,为什么要把这个类实例化?有什么好处?//实例化publicstaticDBConnectinstance;publicstaticDBConnectgetInstance(){if(instance==null){instance=newDBconnect();}returninstance;…

大家好,又见面了,我是你们的朋友全栈君。

  1. 先举例说明:

  2. 下面是一个例子,为什么要把这个类实例化?有什么好处?

  3. //实例化

  4. public
    static DBConnect instance;

  5. public static DBConnect getInstance(){

  6. if(instance ==
    null){

  7. instance =
    new DBconnect();

  8. }

  9. return instance;

  10. }

  11. 总的来说:这是单例模式,一般用于比较大,复杂的对象,只初始化一次,应该还有一个
    private的构造函数,使得不能用
    new来实例化对象,只能调用getInstance方法来得到对象,而getInstance保证了每次调用都返回相同的对象。

  12. 详细解释一下:对象的实例化方法,也是比较多的,最常用的方法是直接使用
    new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等。

  13. *直接使用
    new就不能实现好的设计,这时候需要使用间接使用
    new,即getInstance方法。这是一个设计方式的代表,而不仅仅指代一个方法名。

  14. 1.
    new的使用:

  15. 如Object _object =
    new Object(),这时候,就必须要知道有第二个Object的存在,而第二个Object也常常是在当前的应用程序域中的,

  16. 可以被直接调用的

  17. 2. GetInstance的使用:

  18. * 在主函数开始时调用,返回一个实例化对象,此对象是
    static的,在内存中保留着它的引用,即内存中有一块区域专门用来存放静态方法和变量,

  19. * 可以直接使用,调用多次返回同一个对象。

  20. 3.两者区别对照:

  21. * 大部分类(非抽象类/接口/屏蔽了constructor的类)都可以用
    new
    new就是通过生产一个新的实例对象,或者在栈上声明一个对象 ,每部分的调用

  22. * 用的都是一个新的对象。

  23. * getInstance是少部分类才有的一个方法,各自的实现也不同。

  24. * getInstance在单例模式(保证一个类仅有一个实例,并提供一个访问它的全局访问点)的类中常见,用来生成唯一的实例,getInstance往往是
    static的。

  25. *

  26. * (
    1) 对象使用之前通过getInstance得到而不需要自己定义,用完之后不需要delete;

  27. * (
    2)
    new 一定要生成一个新对象,分配内存;getInstance() 则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于
    new

  28. * (
    3)
    new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建
    static静态实例方法的。

  29. *

  30. * 总结:

  31. * getInstance这个方法在单例模式用的甚多,为了避免对内存造成浪费,直到需要实例化该类的时候才将其实例化,所以用getInstance来获取该对象,

  32. * 至于其他时候,也就是为了简便而已,为了不让程序在实例化对象的时候,不用每次都用
    new关键字,索性提供一个instance方法,不必一执行这个类就

  33. * 初始化,这样做到不浪费系统资源!单例模式 可以防止 数据的冲突,节省内存空间

  34. 以上是我对getInstance()方法的理解,希望能够帮到你!谢谢你的阅读!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129672.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于伯努利原理的速度监测芯片可用于天然气管道泄露检测

    基于伯努利原理的速度监测芯片可用于天然气管道泄露检测基于伯努利原理的速度监测芯片跟杭州迈煌科技用光纤水听器侦听传感技术类似,可用于天然气管道泄露检测。安装操作简单,可在不破坏现有管道下安装,工程易实现。

    2022年6月17日
    34
  • Web Service进阶(一)运行原理[通俗易懂]

    Web Service进阶(一)运行原理[通俗易懂]利用清明小假期,温习了一遍WebService的相关内容,对其工作原理进行了简要总结。以供有需求的朋友和自己日后参考。文章若有不当之处,敬请朋友们提出宝贵建议,以求共勉。Web服务中,我们应该首先了解相关的术语含义:WSDL、UDDI….相关术语方面的介绍在此不再赘述,重点放在原理上。在Web服务中,存在三个角色:服务提供者、服务请求者和服务中介,三者之间的关系如图1…

    2022年7月24日
    13
  • Enterprise Library概述

    Enterprise Library概述Webcast网络讲座:企业库系统课程企业库(EnterpriseLibrary)是微软的模式与实践(Patterns&Practices)的下一代应用程序块(ApplicationBlocks)。该企业库的设计思想是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题,如安全(Security)、日志(Logging)、数据访问(DataA…

    2022年10月20日
    2
  • Win10 Ubuntu16.04/Ubuntu18.04双系统完美安装「建议收藏」

    Win10 Ubuntu16.04/Ubuntu18.04双系统完美安装「建议收藏」按照网上博客的安装教程安装的Win10+Ubuntu16.04双系统安装了好几遍都不成功?启动Ubuntu左上一直有个光标在闪?如果你的电脑也是双硬盘(装Windows系统的固态硬盘+机械硬盘),在安装Win10+Ubuntu16.04双系统前一定要提前了解如下这些安装要点。首先非常非常感谢博客作者们分享的Win10+Ubuntu16.04双系统安装教程,其中一些博客对笔者双系统的安装非…

    2022年7月24日
    8
  • listView1_ItemSelectionChanged事件

    listView1_ItemSelectionChanged事件ItemSelectionChanged事件会触发2次,其中第1次触发,是listview控件先做取消所有选择,第2次才是选择用户选定的项。所以要加上if(e.IsSelected)来判断是否是用户选择改变时触发。…

    2022年7月26日
    5
  • linux版pycharm2021.5.1专业版激活码(最新序列号破解)

    linux版pycharm2021.5.1专业版激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    514

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号