デザインの問題...
私は C# で小さなコンソール アプリケーションを作成する任務を負っており、カプセル化のベスト プラクティスに従いたいと考えています。
UI レイヤー、コントローラー/コマンド プロセッサ レイヤー、ビジネス ルール レイヤー、データ アクセス レイヤーがあります。
アプリケーションを使用すると、ユーザーはレコードを作成し、いくつかのフィールドに入力してから、残りのレコードとともにメモリに挿入できます。
これらのフィールドのいくつかに限られた数の有効なオプションがあると仮定すると、ユーザー入力がこれらのオプションのいずれかに一致することを検証する最も論理的な場所はどこですか?
UI に常駐する一種の一時レコードを用意し、ユーザー データを処理しながら入力し、レコード クラスのセッター メソッドからの戻り値を確認するのは良い設計ですか? 私のレコード クラスは検証を実装せず、代わりにユーザー入力がビジネス ルール レイヤーのオプションと一致することを検証する必要がありますか?
それが答えに影響する場合、アプリケーションはC#で書かれています。私の現在の考えでは、レコード クラスでプロパティを使用し、UI で一時レコードを使用してから、ユーザー入力がオプションと一致する場合にのみレコード クラスで基になるメンバーを設定します。次に、UI は get メソッドを使用してユーザー入力をレコード内の値と比較し、値が一致しない (セットが成功しなかった) 場合は、ユーザーにデータを再入力するように求めます。
より良い設計原則に従うより良い方法はありますか?
前もって感謝します。