我遵循干净的架构,我理解使用存储库来执行getUsers或queryUsers等操作。但是,使用存储库登录用户对我没有意义。如果我跳过存储库层并访问网络层,那么我应该如何与数据层进行通信?
我绝对认为你不应该跳过图层。
引入某种体系结构的重点是毫无例外地遵循它,因此所有应用程序模块都以预期和可预测的方式运行。
那么,如果从不同的角度来看,登录的意思是什么?您将获得用户名和密码,并且必须检查它们是否与存储在数据源中的用户名和密码相匹配。为此,您需要针对当前用户运行查询。并且查询在存储库中的位置运行!你自己说过 - 存储库是所有查询都应该发生的地方。它背后的实施是什么并不重要。
所以,我的建议是添加一个像这样的方法:
public interface UserRepository {
User findByUsernameAndPassword(@NonNull String username, @NonNull String
password);
}
如果你设法找到一个用户 - 好的,他已经过身份验证,如果没有 - 抱歉,请再试一次。
来自this guid我认为使用存储库是一个更好的选择。我的答案基于存储库引用的定义:
存储库模块负责处理数据操作。
我相信干净的架构你不应该跳过层。我在这里看到几个选项:
userRepository.get\set-User()
- 对我来说,它看起来有点奇怪,因为Repository是对集合的抽象,而我们只需要一个。userStorage.get\set-User() or userStorage.login(User), logout(), get()