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


相关推荐

  • SMTP服务器未设置_smtp服务器怎么填

    SMTP服务器未设置_smtp服务器怎么填什么是smtp服务器呢?smtp服务器是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。不过很多用户都不知道怎么去打开这个smtp服务器,针对这个问题,接下来小编给大家做详细介绍。解决方法如下:1、打开IIS开始菜单-运行或者winr快捷键,然后在运行中输入inetmgr按回车;2、如果出现错误提示说明IIS没有安装或者是服务没有启用;3、在ISS中连接栏中选中…

    2022年9月27日
    3
  • Spatial Dropout

    Spatial DropoutSpatialDropout是Tompson等人在图像领域提出的一种dropout方法。普通的dropout会随机地将部分元素置零,而SpatialDropout会随机地将部分区域置零,该dropout方法在图像识别领域实践证明是有效的。dropoutdropout是怎么操作的?一般来说,对于输入的张量x,dropout就是随机地将部分元素置零,然后对结果做一个尺度变换。比如,我们随机初始化一…

    2022年4月30日
    52
  • 用EnableMenuItem不能使菜单变灰的原因

    用EnableMenuItem不能使菜单变灰的原因

    2021年12月16日
    45
  • awk用法

    awk用法一、awk文本过滤的基本用法

    2022年7月11日
    21
  • webpack(4)webpack.config.js配置和package.json配置[通俗易懂]

    webpack(4)webpack.config.js配置和package.json配置[通俗易懂]前言上一篇文章我们使用webpack打包成功了,但是每次都要自己手动输入打包的文件地址和打包到哪里去的地址,非常麻烦,所以这里介绍使用配置文件进行打包webpack.config.js首先我们创

    2022年7月30日
    9
  • PYTHON 全栈工程师「建议收藏」

    PYTHON 全栈工程师「建议收藏」FSDDevelopmentwithPython:全栈工程师,FSD(FullStackDeveloper),在PYTHONRestfulService软件开发上主要包括:明确开

    2022年7月6日
    22

发表回复

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

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