0

クラス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)

ありがとう!

4

1 に答える 1

3

BInitializer を使用したソリューションは非常に優れており、Factory Method design pattern と呼ばれています。

ここでは、いくつかの一般的な創造的なデザイン パターンを見つけることができます: https://sourcemaking.com/design_patterns/creational_patterns

于 2013-10-17T19:50:23.753 に答える