2009-07-05 42 views
0

我有一對具有複雜的一次性初始化的靜態字段。我希望這種初始化能夠延遲發生,a la標準singleton pattern多變量複雜單例

但是,初始化過程涉及兩個字段,所以我不能將它分成兩個不同的單例。

處理這個問題的最佳方法是什麼?

回答

0

目前,我正在做這樣的:

class OuterType { 
    //... 

    static class FieldInitializer { 
     public static readonly SomeType field1, field2; 

     static FieldInitializer() { 
      //Complicated code that sets both fields together 
     } 
    } 

    //... 
} 

沒有人有任何其他的想法?

+0

我敢打賭,這兩個領域實際上屬於一個班級,而不僅僅是爲了方便。如果他們需要一起初始化,它們一起使用,並且可能代表問題域或解決方案域中的某個概念,那麼似乎很可能。 – 2009-07-05 03:25:49

1

創建一個包裝類,該類包含對'singletons'的引用並使該類成爲singleton?

附錄:
如果你真的想避免間接的這種方法的第二個層次,你總是可以做到這一點在兩個階段:

  • 創建一個新的單封裝個別單身(原始點)
  • 爲每個原始單例創建一個單獨元素(具有單獨的後備字段),該元素從組合單例中初始化以保證所有單例都是原子初始化的