1

ドメイン駆動設計を使用しています。

私は次のモデル(クラス)を持っています:

  • ユーザー
  • ユーザーDAO
  • ユーザーリポジトリ
  • ユーザーサービス

UserService には、対応するすべてのアプリケーション ロジックが含まれているはずです。signUp()そこで、 、logIn()などのメソッドを取得update()しました。

私のsignUp()方法では、ユーザーをサインアップしますが、電子メールの UNIQUE 制約に違反した場合に PDO 例外をスローします。さて、例外は例外的なエラーのみであり、制御フローには悪いので、私の質問は次のとおりです。

emailExist()メソッドを UserService クラスに入れることはできますか?

そのため、実際にユーザーをサインアップする前に、最初にコントローラーでそれを呼び出すことができます (そのため、メールが既に存在する場合はフォーム エラーで報告できます)。そのようなメソッドが実際にはデータマッパーに属していることは知っていますが、コントローラーで直接使用することは想定されていないため、 UserService クラスに追加し、そこからリポジトリのfindByEmail()メソッドにマップすることを考えました。

4

1 に答える 1

3

システムは、多くの場合、コマンドとクエリを公開します。SignUp、LogIn、Update はコマンドです。FindByEmail はクエリです。

ユーザー インターフェイスは、有効なコマンドを作成するようにユーザーを誘導するために存在します。メールが UI に既に存在するかどうかを確認すると、ユーザーにより良いフィードバックを提供できます。ユーザーはコマンドを送信する前に修正することができます。

ユーザーを誘導するために最善を尽くしたら、コマンドに例外をスローさせることができます。例外を適切に処理する必要はありません。そこまで到達する可能性は非常に低くなるためです。

于 2014-07-17T17:31:01.373 に答える