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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL语句创建索引_MySQL索引

    SQL语句创建索引_MySQL索引createindex[index_mode]on[cn_name]([car_mode]);index_mode自定义索引名cn_name表名car_mode列名

    2025年9月23日
    6
  • JavaScript页面后退或关闭

    JavaScript页面后退或关闭后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();if(!history.go(-1)){window.close();}window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target=”_blank”属性的标签,或者

    2022年7月25日
    49
  • intellij idea激活成功教程版安装步骤_IntelliJ IDEA激活成功教程版

    intellij idea激活成功教程版安装步骤_IntelliJ IDEA激活成功教程版参考文章:1、里面有idea2018网盘下载地址idea2018激活成功教程版下载解压完:2、详细安装图解:IntelliJIDEA下载安装(含注册码)傻瓜式安装即可哈哈,安装完run配置一路点击next,这里配置的功能,以后也可以修改,所以不用担心。…

    2022年10月9日
    3
  • 微信自动回复机器人含源码和安装包[通俗易懂]

    微信自动回复机器人含源码和安装包[通俗易懂]介绍微信自动回复机器人,有三个机器人可供选择,可在界面进行配置,可定时提醒,bs端程序,基于C#winfrom程序安装教程源码地址:https://gitee.com/xiaoyutou_647/wechat-auto-reply-robot/blob/master/README.md直接打开\Setup1\setup.exe即可安装需要安装的环境已经集成使用说明1.点击启动微信2.扫码登陆3.运行成功4.5.根据最前面的id开启自动恢复功能6.也可进行语音唤醒,一起

    2022年10月1日
    5
  • js浅拷贝和深拷贝的区别_前端面试深拷贝和浅拷贝

    js浅拷贝和深拷贝的区别_前端面试深拷贝和浅拷贝1、JS数据类型基本数据类型:Boolean、String、Number、null、undefined引用数据类型:Object、Array、Function、RegExp、Date等2、深拷贝与浅拷贝深拷贝和浅拷贝都只针对引用数据类型,浅拷贝会对对象逐个成员依次拷贝,但只复制内存地址,而不复制对象本身,新旧对象成员还是共享同一内存;深拷贝会另外创建一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。区别:浅拷贝只复制对象的第一层属性,而深拷贝会对对象的属性进行递归

    2022年10月1日
    3
  • 二叉树层次遍历算法——C/C++

    二叉树层次遍历算法——C/C++二叉树层序遍历1、算法思想用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。在进行层次遍历的时候,设置一个队列结构,遍历从二叉树的根节点开始,首先将根节点指针入队列,然后从队头取出一个元素,每取一个元素,执行下面两个操作:访问该元素所指向的节点若该元素所指节点的左右孩子节点非空,则将该元素所指节点的左孩子指针和右孩子指针顺序入队。此过程不断进行,当队列为空时,二叉树的层次遍历结束…

    2022年6月5日
    30

发表回复

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

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