我正在学习单身设计模式,我确实理解了这个概念。但是,我对以下代码有疑问: -
class Token
{
private static int i = 5;
private static Token obj = new Token();
//Private Constructor
private Token()
{
}
//Returning the singleton object
public static Token getObject()
{
return obj;
}
public static int getValue()
{
return i;
}
}
public class TestMain
{
public static void main(String args[])
{
Token obj = Token.getObject();
System.out.println("Without object " + Token.getValue());
System.out.println("With object " + obj.getValue());
}
}
在两种情况下都会打印实例变量 -
Without object 5
With object 5
获取实例变量的两种方式之间的区别是什么?推荐使用哪种方法?
答案 0 :(得分:2)
i
是属于类Token
的静态变量,因此它对于Token
类型的所有对象具有相同的值。
出于所有实际目的,obj.getValue()
与Token.getValue()
相同,您可以使用其中之一,但为了更好的可读性,请使用Token.getValue()
,因为它强化了静态变量{{ 1}}和静态方法i
属于整个类,而不属于该类的某些对象。
答案 1 :(得分:1)
事实上在Token.getValue()
中,您可以参考您的单身人士。因此,调用obj.getValue()
引用与{{1}}
答案 2 :(得分:1)
没有什么区别,例如访问你需要实际的实例,而你并不总是这样。
至于偏好,取决于你的要求。对我来说,静态字段和方法应该使用类而不是实例来访问 - 这清楚地表明它是静态的。