作成中の単体テスト用のテストデータを簡単に作成できるように、ビルダーの構築を開始しました。
ビルダーの基本構造は次のとおりです。
public class MyClassBuilder
{
public int id = 0; //setting the default value here
//allows MyClass to be built with a specific id
public MyClassBuilder WithId(int id)
{
this.id = id;
return this;
}
public MyClass Build()
{
return new MyClass(id);
}
}
このパターンの使用法は次のようになります。
MyClass mc = new MyClassBuilder().WithId(5).Build();
私はそれで満足しています...しかし、質問があるMyClass
のは、自明ではないプロパティがある場合です....デフォルト値でそれを構築する方法について少し確信が持てません。
public class MyClassBuilder
{
public int id = 0; //setting the default value here
//do I construct the default value using a MySecondClassBuilder?
public MySecondClass mySecondClass;
//allows MyClass to be built with a specific id
public MyClassBuilder WithId(int id)
{
this.id = id;
return this;
}
public MyClassBuilder WithMySecondClass(MySecondClass mySecondClass)
{
this.mySecondClass = mySecondClass;
}
public MyClass Build()
{
return new MyClass(id);
}
}
私の仮定は、ビルダーを作成し、MySecondClass
それを使用してデフォルトの実装を作成することです。
私の仮定が正しく、ベストプラクティスであることを誰かが確認できますか?
私は現在、自分の仮定をテストしている最中ですが、Google を使用して見つけることができるビルダー パターンの唯一の例は、参照型ではなく値型であるプロパティのみを構築したため、StackOverflow でこのアイデアを文書化すると思いました。