entity - 如何验证实体内的电子邮件?

标签 entity clean-architecture

我得到了这个用户实体:

class User {
   id: string;
   name: string;
   email: string;
   password: string;

   ....
}

我的业务规则规定:
每封电子邮件一名用户


该实体的目的是什么,它不能有任何依赖关系。如何检查电子邮件是否唯一?

我不明白的是,谁调用实体并将数据推送到其中进行验证以及谁可以访问它?(用例或存储库)。

最佳答案

实际上,什么时候需要满足这个规则呢?仅当您创建新用户时。当您从数据库中获取用户时,检查它是没有意义的。或者当你与用户一起做某事时,例如更改电话号码、阻止等。

这意味着该行为不属于User类。我建议创建某种 UserFactory 来创建新用户并注入(inject)一个(或多个)策略。


    public UserFactory(EmailCheckingPolicy: emailpolicy, AnotherPolicy: somethingElse);

    public User create(UserData: userData) {
        if (emailPolicy.isPass(userData.email)) ...
        return User(userData.email, userData.name, ...)
    }
}

您可以将UserFactory注入(inject)UseCase。

关于entity - 如何验证实体内的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59551753/

相关文章:

c# - Entity Framework 自动预加载

architecture - 任务队列在 Clean Architecture 中的什么位置?

java - 持久性——实体类 vs Hibernate 框架 vs 其他

java - JPQL 中的 LEFT JOIN ON()

entity-framework - Entity Framework 5 IBM DB2 EntityException 底层提供程序在 ConnectionString 上失败

java - 整洁的代码: Using prefix get for java function name

c# - 在 Entity Framework Core 中使用 Fluent API 编写范围数据注释

Android clean 架构和相关实体

c# - 我应该把我的 DTO 放在整洁的架构中的什么地方?

java - 使用 JPA 构建 Java 项目时出现问题