存储库只与数据层通信?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储库只与数据层通信?相关的知识,希望对你有一定的参考价值。

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

答案

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

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

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

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

public interface UserRepository {

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

}

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

另一答案

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

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

另一答案

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

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

以上是关于存储库只与数据层通信?的主要内容,如果未能解决你的问题,请参考以下文章

unity要求射线只与某层不发生碰撞,看清楚是不发生,layerMask参数是只与某层发生碰撞,反过来怎么弄??

在tablayout片段之间进行通信[重复]

与另一个片段通信的片段接口

逻辑架构与存储引擎

Spark存储管理

网络层和传输层