搜索

谁能告诉我为什么单例模式的唯一实例为什么设置为静态的?

gecimao 发表于 2019-07-24 18:35 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  知道合伙人体育行家采纳数:265获赞数:1777优秀学生干部 优秀毕业生 系足球队队长向TA提问展开全部其实问题很简单,你首先要弄明白如何实现单例模式:

  其次,在本类中自定义一个对象(禁止其他程序创建类的对象就要自己创建一个,否则就不是单例了)

  最后,提供一个可访问类自定义对象的类成员方法(对外提供该对象的访问方式)。

  也就是说,你不能用该类在其他地方创建对象,而是通过类提供的方法访问类中的那个自定义对象。

  那么关键来了,使用类中方法只有两种方式,①创建类的一个对象,用对象去调用方法;②使用类名直接调用类中方法。

  显然第一种情况不能用,只能使用第二种方法。而想要使用类名直接调用类中方法,类中方法必须是静态的,而静态方法不能访问非晶态成员变量,因此类自定义的实例变量也必须是静态的。这就是为什么单例模式的唯一实例为什么设置为静态的。

  首先,类的静态成员变量就是指的类共享的对象,而单例模式的对象设成静态就是为了让该类所有成员共享同一个对象,所以从语义上是合适的;

  其次,从语法考虑,常见的单例模式都是通过一个静态方法(如getInstance)返回其单例,因为静态方法的内部不能直接使用非静态变量,所以返回的这个实例就是静态的。

  其实,学模式不用钻牛角尖,你试试,写成非静态的,总有办法破坏你的单例。

本文链接:http://robynlynne.com/duixiangshifangfa/762.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部