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

初始化模式?

  •  0
  • jmrah  · 技术社区  · 12 年前

    假设我有A级:

    public class A
    {
      private B _b;
    
      public class A(B b)
      {
        Assert.That(b != null);
        _b = b;
      }
    }
    

    对象b需要一些复杂的初始化,比如:

    b.Prop1 = ...
    b.Prop2 = ...
    b.Prop3 = ...
    
    int answerToSomeComplexFormula = PerformComplexFormula();
    
    b.Prop4 = answerToSomeCopmlexFormula
    
    etc...
    

    我不想在构造函数中执行此初始化。是否有某种模式的名称来描述返回具有复杂初始化的对象?类似于:

    public class BInitializer
    {
       public B Create()
       {
          B b = new B();
          // set up properties
          return b;
       }
    }
    
    BInitializer initializer = new BInitializer();
    B b = initializer.Create();
    
    A a = new A(b)
    

    谢谢

    1 回复  |  直到 12 年前
        1
  •  3
  •   J Pollack    7 年前

    您使用BInitializer的解决方案非常好,它被称为 Factory Method 设计模式。

    在这里你可以找到一些常见的创意设计模式: https://sourcemaking.com/design_patterns/creational_patterns

    推荐文章