我尝试练习 DDD,但我对我在下面写的这类规则有疑问:
领域层下的类 UserAggregator。
public class UserAggregator{
private UUID userId;
private String userName;
private String country;
//getter
boolean isUserNamePatternCorrect(){
return this.userName.startsWith("TOTO");
}
}
领域层下的存储库接口。
public interface UserRepository {//User Table
public UserAggregator findUser(UUID id);
public void deleteUser(UserAggregator userToARchive);
}
public interface ArchiveUserRepository { //ArchiveUser Table
public archiveUser(UUID id);
}
UserRepository/ArchiveUserRepository 使用 spring 数据在基础设施层下实现。
基础设施层下的服务。
public class MyService {
@Autowired
UserRepository userRepo;
@Autowired
ArchiveUserRepository archiveUserRepo;
public void updateUserName(UUID userId){
UserAggregator userAgg = userRepo.findUser(userId);
if(Objects.nonNull(userAgg)){
boolean isCorrect = userAgg.isUserNamePatternCorrect();
if(!isCorrect){//-----------------------------1
userRepo.deleteUser(userAgg);//-----------2
archiveUserRepo.archiveUser(userAgg);//---3
}
}
//....
}
}
我的管理规则说,如果用户名与模式不匹配,则将用户归档到归档表中并将其从用户表中删除。
如您所见,规则(从 //1 到 //3)是写在服务类中而不是我的聚合器中!
这个对吗 ?或者如何管理这个?