谁能告诉我为什么单例模式的唯一实例为什么设置为静态的?
3个回答
展开全部
其实问题很简单,你首先要弄明白如何实现单例模式:
首先,将构造函数私有化(禁止其他程序创建类的对象)
其次,在本类中自定义一个对象(禁止其他程序创建类的对象就要自己创建一个,否则就不是单例了)
最后,提供一个可访问类自定义对象的类成员方法(对外提供该对象的访问方式)。
也就是说,你不能用该类在其他地方创建对象,而是通过类提供的方法访问类中的那个自定义对象。
那么关键来了,使用类中方法只有两种方式,①创建类的一个对象,用对象去调用方法;②使用类名直接调用类中方法。
显然第一种情况不能用,只能使用第二种方法。而想要使用类名直接调用类中方法,类中方法必须是静态的,而静态方法不能访问非晶态成员变量,因此类自定义的实例变量也必须是静态的。这就是为什么单例模式的唯一实例为什么设置为静态的。
首先,将构造函数私有化(禁止其他程序创建类的对象)
其次,在本类中自定义一个对象(禁止其他程序创建类的对象就要自己创建一个,否则就不是单例了)
最后,提供一个可访问类自定义对象的类成员方法(对外提供该对象的访问方式)。
也就是说,你不能用该类在其他地方创建对象,而是通过类提供的方法访问类中的那个自定义对象。
那么关键来了,使用类中方法只有两种方式,①创建类的一个对象,用对象去调用方法;②使用类名直接调用类中方法。
显然第一种情况不能用,只能使用第二种方法。而想要使用类名直接调用类中方法,类中方法必须是静态的,而静态方法不能访问非晶态成员变量,因此类自定义的实例变量也必须是静态的。这就是为什么单例模式的唯一实例为什么设置为静态的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意楼上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询