1

我正在使用领域驱动设计。

我有以下模型(类):

  • 用户
  • 用户DAO
  • 用户存储库
  • 用户服务

我知道 UserService 应该包含所有相应的应用程序逻辑。所以我得到了signUp(),logIn()update()里面的方法。

我的signUp()方法是注册用户,但在违反电子邮件唯一约束时抛出 PDO 异常。现在,由于异常仅针对异常错误并且对控制流不利,我的问题是:

方法是否emailExist()允许在 UserService 类中?

所以我可以先在我的控制器中调用它(如果电子邮件已经存在,我可以用表单错误报告),然后再实际注册用户。我知道这种方法实际上属于数据映射器,但由于它们不应该直接在控制器中使用,我考虑将它添加到我的 UserService 类中,然后从那里将它映射到我的存储库的findByEmail()方法。

4

1 回答 1

3

系统经常公开命令和查询。SignUp、LogIn 和 Update 是命令。FindByEmail 是一个查询。

用户界面可以尝试并指导用户编写有效的命令。检查 UI 中是否已经存在电子邮件可以为用户提供更好的反馈 - 允许他在发送命令之前更正命令。

一旦你尽力引导用户,你就可以让你的命令抛出一个异常——而不用干净的方式处理它,因为你走那么远的机会现在非常小。

于 2014-07-17T17:31:01.373 回答