为什么我们在 BLoC 架构中有冗余存储库?

Why we have redundant repository in BLoC Architecture?

在 BLoC 架构中我们有 Data ProviderRepository ,在很多例子中我看到

Repository 刚刚调用了 Data Provider 并且创建 Repository 真的很麻烦,为什么存储库 存在吗?目的是什么

这实际上是来自 Adopting Clean Architecture 的东西,其中存储库是一个接口,它提供从源到 UI 的数据。

来源通常是远程和数据,其中远程指的是从远程来源(这可能是其他应用程序、REST API、Websocket 连接)和本地来源(类似的东西)获取数据到数据库。)为此设置两个单独的 classes 背后的想法是提供足够的关注点分离。

想象一下像 Instagram 这样的应用程序,该应用程序同时管理离线数据和在线数据。然后分别处理每个逻辑,然后使用您的 viewmodel/bloc 用来访问数据的存储库是有意义的。欧盟不需要知道数据的来源,它只需要数据。存储库实现不需要知道用于进行 API 调用的是什么,它只需要使用获取的数据。同样,Repository Implementation 不需要知道本地数据是从哪里获取的,它只需要使用它。这样每一位都被充分抽象,并且一个 class 中的变化不会影响其他 class,因为一切都是一个接口。

所有这些都有助于更好地测试代码,因为模拟和存根变得更容易了。