这是否只保证单例类

时间:2017-05-25 17:49:18

标签: java static singleton

void build(){
  while(true){
    Builder builder = new Builder();
    ...
  }
}

class Builder{
   private final Store store = null;

   public Builder(){
     store = Store.getInstance();
   }
}

'商店'实现为标准单例类,如下所示: https://en.wikipedia.org/wiki/Singleton_pattern

我希望Store对象只会初始化一次并且在' while'循环相同的'存储'将在多个" builder"内创建并返回对象。由于整个循环而产生的对象。这有保证吗?如果定义" store"作为Builder的静态变量?

2 个答案:

答案 0 :(得分:1)

  

我希望Store对象只会初始化一次并且在   'while'循环将创建并返回相同的'store'对象   由于整个循环,在多个“构建器”对象内部。这是   保证?

是的,如果Store对象实现为Singleton,则会有一个static对象实例,这是由关键字Singleton引起的。

  

如果将“store”定义为Builder的静态变量呢?

您可能会也可能不会这样做,具体取决于您的需求,但如果您确实需要private final Store store = null;which in many cases you don't),您可能希望将其存储在单独的类中,只是为了使代码更多结构

此外,您不需要Store,因为您可能始终使用Store.getInstance()访问test1 {同一个实例}。

答案 1 :(得分:0)

由于Store的实例在其类中是静态的,因此调用getInstance()不应创建新的StoregetInstance()只会返回您在单身人士中应该拥有的private static final Store instance

来自wikipedia页面:

  

单例模式的实现必须:确保只存在单例类的一个实例;和   提供对该实例的全局访问。