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


相关推荐

  • transactionscope mysql_c# – 嵌套的TransactionScope在测试中失败

    transactionscope mysql_c# – 嵌套的TransactionScope在测试中失败我正在使用MSTest通过MySQLConnector和使用EntityFramework4.3对MysqL5.5.19数据库运行一些自动化测试.我正在尝试在我的数据库访问类库中使用TransactionScope在需要时执行回滚.另外,在我的测试代码中,我希望在每次测试之前使用TransactionScope将数据库恢复到已知状态.我使用TestInitialize和TestCleanup…

    2022年7月24日
    10
  • 怎么生成pkl文件_python unzip

    怎么生成pkl文件_python unzip我在训练UCF101数据集的时候,遇到一个大高玩使用pkl文件,一开始使用它们的数据炮的好好的。后来开始跑自己的数据时,就出问题了。不知道这个pkl到底是个什么东西。原始的那个大高玩的ucf101的标签数据读取出来是这个样的:[‘PommelHorse’,’Surfing’,’HammerThrow’,’PlayingViolin’,’WallPushups’,’PullUps’,’PizzaTossing’,’SalsaSpin’,’Shotput’,’CricketShot’,

    2022年9月4日
    2
  • CentOS 7 x8安装记录

    CentOS 7 x8安装记录CentOS7x8安装插入刻录好的U盘(刻录这里我就不说了,有实用的刻录链接可以下方留言给我我补充上)按下拥有弹性的开机按钮,开启你的装机旅程,启动时注意!按F11进入BootMenu一、在BootMenu中选择UEFI:VendorCoProductCode,Partition1如果选择了VendorCoProductCode安装结束后,启动系统后就会下面这副惨样子…

    2022年5月25日
    76
  • CefSharp 实现拖拉滑动验证Demo

    CefSharp 实现拖拉滑动验证Demo给大伙看看效果。滑动验证

    2022年9月19日
    0
  • idea2021.11.3激活码(JetBrains全家桶)

    (idea2021.11.3激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1HV55HYOZP-eyJsaWNlb…

    2022年3月28日
    91
  • GetStyle,ModifyStyle,GetExStyle,ModifyStyleEx「建议收藏」

    GetStyle,ModifyStyle,GetExStyle,ModifyStyleEx「建议收藏」要添加或除去窗口的普通风格,可以使用GetStyle()和ModifyStyle()方法来实现要设置或去除窗口的扩展风格,可以使用GetExStyle()和ModifyStyleEx()方法实现1.CWnd::GetExStyle与CWnd::ModifyStyle(1)GetExStyle原型: DWORDGetStyle()const;作用: 获取

    2022年7月19日
    14

发表回复

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

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