存储库只与数据层通信?

问题描述 投票:0回答:3

我遵循干净的架构,我理解使用存储库来执行getUsers或queryUsers等操作。但是,使用存储库登录用户对我没有意义。如果我跳过存储库层并访问网络层,那么我应该如何与数据层进行通信?

android repository clean-architecture
3个回答
2
投票

我绝对认为你不应该跳过图层。

引入某种体系结构的重点是毫无例外地遵循它,因此所有应用程序模块都以预期和可预测的方式运行。

那么,如果从不同的角度来看,登录的意思是什么?您将获得用户名和密码,并且必须检查它们是否与存储在数据源中的用户名和密码相匹配。为此,您需要针对当前用户运行查询。并且查询在存储库中的位置运行!你自己说过 - 存储库是所有查询都应该发生的地方。它背后的实施是什么并不重要。

所以,我的建议是添加一个像这样的方法:

public interface UserRepository {

    User findByUsernameAndPassword(@NonNull String username, @NonNull String 
password);

}

如果你设法找到一个用户 - 好的,他已经过身份验证,如果没有 - 抱歉,请再试一次。


0
投票

来自this guid我认为使用存储库是一个更好的选择。我的答案基于存储库引用的定义:

存储库模块负责处理数据操作。


0
投票

我相信干净的架构你不应该跳过层。我在这里看到几个选项:

  • userRepository.get\set-User() - 对我来说,它看起来有点奇怪,因为Repository是对集合的抽象,而我们只需要一个。
  • 创建用户存储的抽象。例如,userStorage.get\set-User() or userStorage.login(User), logout(), get()
© www.soinside.com 2019 - 2024. All rights reserved.