0

ドメイン駆動設計では、ファクトリを使用してドメイン レイヤーにドメイン オブジェクトを作成することをお勧めします (直接コンストラクターまたは IoC を使用するのではなく)。

しかし、プレゼンター レイヤーでドメイン オブジェクト ファクトリを使用する場合はどうでしょうか。たとえば、プレゼンターから取得したユーザー入力からドメイン オブジェクトを作成していたとします。

以下に例を示します。10 進数の設定を持つ構成ドメイン オブジェクトがあるとします。

パブリック クラスの構成: PersistantObject {

 public decimal temperature {get;set;}

 ...(times 20)

 public decimal gravity {get;set;}

}

このオブジェクトをプレゼンター レイヤーではなくドメイン レイヤーで作成するには、これらの各 10 進数値を関数パラメーターとして渡す必要があります。扱いにくい関数定義と呼び出しを作成します。

つまり、ConfigurationService.CreateConfiguration(温度、...(x20)、重力);

おそらくより良い解決策は、構成オブジェクトをプレゼンター レイヤーに作成し、構成オブジェクトのすべての値をユーザー入力から直接割り当てて、長い関数呼び出しをスキップすることです。

構成 config = ConfigurationFactory.CreateNewConfiguration();

config.temperature = 温度;

..(x20).. = ...;

config.gravity = 重力;

ConfigurationService.SaveNewConfiguration(config);

しかし、このアプローチが間違っているかどうか疑問に思っています。なぜですか? これらのアプローチの両方が間違っている場合、ユーザー入力から長いオブジェクトを作成するための最良のアプローチは何ですか?またその理由は何ですか?

ありがとう!

4

2 に答える 2

2

ドメインオブジェクトをドメインレイヤーからプレゼンテーションレイヤーに入れないことをお勧めします。プレゼンテーション レイヤーをプレゼンテーションに集中させます。

このため、ドメイン層とプレゼンテーション層の間でデータをシャッフルするためのデータ転送オブジェクトを構築します。あなたの場合、サービスに渡され、対応するドメイン オブジェクトに変換される DTO をダイアログに入力させます。

ただし、毎回 DTO からドメイン オブジェクトを構築する必要はありません。DTO がドメイン オブジェクトのサブセットのみを表す場合を考えてみましょう。このような DTO から既存のドメイン オブジェクトを再構築すると、部分的なドメイン オブジェクトが得られます。適切な更新ができるように、完全なドメイン オブジェクトを保持する軽量のキャッシュを維持する必要があるでしょう。

基本的に、 Introduce Parameter Objectリファクタリングを適用すると、DTO ソリューションにたどり着きます。

于 2009-01-08T03:24:05.877 に答える
0

これを処理する主な方法は2つあります

1)これがダイアログを介して設定される場合、コマンドパターンを実装するクラスを作成し、問題のオブジェクトとダイアログをバインドします。たとえば、CmdCreateConfigurationService、CmdEditConfigurationServiceなどです。

CmdCreateConfigurationServiceは、正しい構成サービスを選択するために必要なファクトリクラスと最小パラメーターに依存します。

IConfigurationServiceEditorインターフェースをセットアップし、それをパラメーターの1つとしてCmdEditConfigurationパラメーターに渡します。IConfigurationServiceEditorインターフェースを使用して、ダイアログとの間の情報の転送を可能な限り簡単かつ簡単にするために必要な数のメソッドを定義します。キーと値のコレクションを使用することをお勧めします。コマンドオブジェクトは、このコレクションから構成サービスをセットアップする方法を知っています。ダイアログは、セットアップ時にこのコレクションを期待することを知っています。

データ構造に関係なく、コマンドオブジェクトで構成サービスに入力する作業を行います。非ダイアログ/フォーム/画面オブジェクトにIConfigurationServiceEditorを実装させることで、テストを自動化し、特定の状況では複雑なオブジェクトの構成を容易にすることができます。

この方法は、それぞれが4〜40のエントリを持つ数十のパラメトリック形状を持つCAD/CAMソフトウェア用に開発しました。

于 2009-01-07T22:36:44.133 に答える