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

How to validate email inside entity?

我得到了这个用户实体:

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

   ....
}

我的业务规则是这样说的:
每个电子邮件一个用户


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

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

其实什么时候需要满足这个规则呢?仅当您创建新用户时。当您从数据库中获得用户时,检查它是没有意义的。或者当您与用户进行某些操作时,例如更改电话号码、阻止等。

表示此行为不属于Userclass。我建议创建某种 UserFactory 来创建新用户并向其中注入一个(或多个)策略。


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

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

您可以将 UserFactory 注入 UseCase。