我得到了这个用户实体:
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/