0

ドメイン オブジェクトのコンストラクターが乱雑になりつつあるため、ドメイン オブジェクトのファクトリを構築しています。私の質問は、制約のテストをファクトリに移動する必要がありますか、それともドメイン オブジェクト コンストラクターに残す必要がありますか?

テストはほとんどの場合、オブジェクトがインスタンス化される前に必要なパラメーターが提供されていること、または関連するオブジェクトが特定の値を持っていることを確認するだけです。テストが失敗した場合、通常は単に例外をスローしています。

一方では、ロジックはドメイン オブジェクトに属していると思います。なぜなら、それはオブジェクトの不可欠な部分だからです。たとえば、名前のないペットは無効です。

一方、ファクトリに移動するほとんどすべてのものは、ドメイン オブジェクトの重要な部分です。(これはドメイン オブジェクト ファクトリの結果ですよね? ドメイン オブジェクトのカプセル化が壊れますか?)

ドメインに残しておいた方が安全ですが、乱雑です。私のコードは工場にあればもっと読みやすいのですが、誰かが誤ってnew工場の代わりに演算子を使用した場合、私は困っています...

4

1 に答える 1

1

コメントに記載されているように、ドメイン オブジェクトに固有の検証を維持する方がはるかに優れています。このようにして、コンテキスト固有のすべての検証ルールの乱雑さから工場を解放します。

ファクトリのエラー処理を一元化したい場合は、ファクトリが作成する各クラスに、検証要件に一致しないオブジェクトを作成しようとしたときに例外をスローさせるだけです。あなたの工場はそれらを捕まえて対処することができます。

于 2013-07-15T02:27:17.000 に答える