代码之家  ›  专栏  ›  技术社区  ›  SLaks

多变量复杂单态

  •  0
  • SLaks  · 技术社区  · 15 年前

    我有一对静态字段,具有复杂的一次性初始化。我希望这个初始化能够缓慢地进行, 洛杉矶 标准 singleton pattern .

    但是,初始化过程涉及这两个字段,因此我无法将其分为两个不同的单例。

    2 回复  |  直到 15 年前
        1
  •  1
  •   jerryjvl    15 年前

    创建一个包含对“singleton”和“singleton”的引用的包装类,并使该类成为singleton?


    如果您确实希望通过这种方法避免第二级间接操作,您可以分两个阶段进行:

    • 创建一个封装单个单例的新单例(原点)
    • 为每个原始单例(带有单独的支持字段)创建一个单例,该单例是从组合单例初始化的,以保证所有单例都是原子初始化的
        2
  •  0
  •   SLaks    15 年前

    我现在是这样做的:

    class OuterType {
        //...
    
        static class FieldInitializer {
            public static readonly SomeType field1, field2;
    
            static FieldInitializer() {
                //Complicated code that sets both fields together
            }
        }
    
        //...
    }