不動産ポータルを構築しています。サービス、マッパー、エンティティがあります。段階では、ユーザーに次のいずれかを許可しています
- フォームからプロパティを作成します。
- 1 つ以上のプロパティを含むバッチ ファイルをアップロードします。
したがって、彼がフォームを介してプロパティを作成した場合、フォームを検証でき、有効なプロパティである場合は、それをシステムに追加できます。しかし、彼がバッチファイルを介してアップロードする場合、フォームの責任は
- ユーザーがファイルを提供したことを検証する
- ファイルの種類は有効です
- ファイルサイズは許容範囲内です。
この後、ファイルをコントローラーまたはサービスに引き渡す必要があります。
現在、保留中のタスクは
- ファイルを処理して内容を取得する
- 内容を検証する
- 検証された場合は、プロパティを保存するか、エラーを表示します。
では、上記のタスクを担当するのはどの部分でしょうか?
コントローラーが最初のファイル処理を行い、データをサービスに渡す必要があると考えています。これは、コントローラーでフォーム オブジェクトを作成/取得し、コントローラー内でフォームを検証することを意味します。
次のセクションでは、実際にはエンティティのコレクションであるコンテンツを検証します。したがって、この段階では次のようなアイデアがあります
- サービスはデータを検証してエンティティを作成し、それらを保存します。
- または、サービスは提供されたデータを使用してエンティティを作成し、エンティティの検証関数を呼び出します。
- または、サービスは提供されたデータを使用してエンティティを作成しようとし (データをエンティティ コンストラクターに送信します)、データが有効な場合は、エンティティが作成されるか、エラーが生成されます。
上記のアプローチについて私が考えることができる問題は次のとおりです。
- サービスがデータを検証している場合、それはサービスがエンティティの内部構造を認識していることを意味します。そのため、後でエンティティ構造を更新する必要がある場合は、サービスも更新する必要があります。これにより、ある種の依存関係が導入されます。
- 2番目のアプローチでは、エンティティが有効でない場合、最初にエンティティを作成する必要はないと思います。
- 3 番目のアプローチでは、エンティティのコンストラクター内に機能を作成するため、エンティティをデータに依存させます。そのため、エンティティを永続から取得する必要がある場合は、スタブ データを提供する必要があります。
それとも私の考えすぎ??