单例模式构造函数为什么要是私有的
今天突然脑子短路相处一个问题,既然单例模式的成员都是静态的了那我new不new这个类的对象又有什么关系呢,我只要不在变量声明的时候取new对象,而在获取实例的方法中去判断...
今天突然脑子短路相处一个问题,既然单例模式的成员都是静态的了那我new不new 这个类的对象又有什么关系呢,我只要不在变量声明的时候取new对象,而在获取实例的方法中去判断引用有没有引用到实例不就好了吗,反正静态成员本身就只属于类而不是对象
展开
展开全部
不公开(私有)构造器是为了减少错误的使用和猜测而定的规则。
你可以想象,当你的类拥有一个公有的构造器,而你的文档说明也没有这么详细明确告诉使用者不该使用构造器构造实例而该用静态成员的时候(或者使用者从根本上忽略的文档),使用者就会疑惑,这时候会给程序埋下不稳定的因素,而且有时候很难被发现得到。.
如果使用私有的构造器,当你尝试去new的时候编译器就会马上阻止你当前的操作。
你可能觉得如果是自己用的没所谓,但是当你过两个星期再看回你的代码,没有了这个私有的构造器,可能连你自己都会疑惑——“为啥不能通过new来使用这个对象呢?”
你可以想象,当你的类拥有一个公有的构造器,而你的文档说明也没有这么详细明确告诉使用者不该使用构造器构造实例而该用静态成员的时候(或者使用者从根本上忽略的文档),使用者就会疑惑,这时候会给程序埋下不稳定的因素,而且有时候很难被发现得到。.
如果使用私有的构造器,当你尝试去new的时候编译器就会马上阻止你当前的操作。
你可能觉得如果是自己用的没所谓,但是当你过两个星期再看回你的代码,没有了这个私有的构造器,可能连你自己都会疑惑——“为啥不能通过new来使用这个对象呢?”
追问
我仔细想了一下,如果是在本类中要保证只有本类的一个实例,一定要用私有构造器,如果在类中要保证其他类对象唯一,则不用private其实也可以,规定用私有构造器只是一种约定或者就是你说的保证用户不会混乱,大概就是这个样子了
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
2015-08-07
展开全部
私有构造器,可以减少错误的使用和猜测而定的规则。
在实际开发过程中,由于调用了一个单例模式,该单例的构造方法是public的。在调用时候,采用了Singleton singleton = new Singleton();调用,这样的结果就是导致不断的初始化Singleton类,内存很快会耗尽,应用速度变慢。
所以,单例模式的构造方法最好定义private,并且通过Singleton.getInstance()调用。
这个时候,最好采用性能调试工具加以分析,看哪个类实例最多。
在实际开发过程中,由于调用了一个单例模式,该单例的构造方法是public的。在调用时候,采用了Singleton singleton = new Singleton();调用,这样的结果就是导致不断的初始化Singleton类,内存很快会耗尽,应用速度变慢。
所以,单例模式的构造方法最好定义private,并且通过Singleton.getInstance()调用。
这个时候,最好采用性能调试工具加以分析,看哪个类实例最多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单例模式本身不就是有两种模式可以选择么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询