2013-05-03 127 views
-1

为什么在AEinsam/HabReader使用此代码:有关静态方法和变量

private static User instance = null; // line:25 

public static User getInstance() { 
if (instance == null) 
    instance = new User(); 
return instance; 
} 

// line:31 

我可以做课,而不会这种方法吗?

+1

是;可以创建一个将该代码放入其中的类。 – SLaks 2013-05-03 20:37:06

+1

这是一个糟糕的单身人士。 – 2013-05-03 20:37:12

+1

@SotiriosDelimanolis +1指出它很糟糕,甚至有几个原因 - 这是[JavaWorld文章](http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html)解释一些问题。 – fvu 2013-05-03 20:39:52

回答

4

这是(a 执行不力Singleton。如果你省略这个静态块但不创建公共构造函数,那么你的类可能没用。如果您正在寻找一种替代方案,其行为方式与我(和其他大多数人)的行为方式相同,它将引导您访问Enum Pattern

+1

重点_poorly实施_ – 2013-05-03 20:38:56

+1

@SotiriosDelimanolis,强调添加:) – 2013-05-03 20:39:33

+2

为什么它'实施不佳'的一个原因是因为它没有定义一个私人默认构造函数'私人用户(){} ”。这意味着仍然可以有此用户类的多个实例。 – 2013-05-03 20:41:51

2

这是一个singleton模式,这意味着该类应该只有一个实例存在。

1

该代码的编写者希望确保只有一个User类的实例。这种设计模式被称为“单身”。

是的,你可以在没有该方法的情况下创建一个类,但是该类可能有多个实例。

+1

他没有做很好的工作。 – 2013-05-03 20:39:12