18

Test Data Builder パターンの長所を支持するブログ 投稿をたくさん読んできました。良い考えのように思えますが、すべての投稿は何年も前のものです。

C# がObject Initializesを導入したとき、Test Data Builder パターンは廃止されましたか?

オブジェクト初期化子が登場する前は、人物オブジェクトを初期化するために次のコードが必要でした。

Person p = new Person("John", "Doe", "555-555-1234");

当時、ビルダーを使用すると、次のようにコードがクリーンアップされます。

Person person = new PersonBuilder()
        .WithFirstName("John")
        .WithLastName("Doe")
        .WithPhoneNumber("555-555-1234");

オブジェクト初期化子を使用すると、ビルダー メソッドを記述しなくても次のようになります。

Person p = new Person() {FirstName="John", LastName="Doe", Phone="555-555-1234"};

この単純な例では、ビルダー パターンは必要ないように見えます。何か不足していますか?人々はまだビルダーパターンを使用していますか? もしそうなら、どのような利点がありますか?

4

2 に答える 2

1

たとえば、StringBuilder を取り上げます。これは依然として有用であり、高性能の新しい文字列を構築するために必要です (コンパイラの最適化はすべてのシナリオをカバーするわけではないため)。すでにコメントされているように、他の不変オブジェクトについても同じことが言えます。

また、ビルダー パターンを使用する場合は、初期化された型を簡単に置き換えることができます。これにより、疎結合が可能になります (依存性注入のため)。テスト目的で常に必要とは限りませんが、それでも便利な場合があります。

于 2013-03-22T14:50:45.080 に答える