- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
什么是交互器?它如何适应 MVP 设计?使用交互器与将交互器代码放在演示器中的优点/缺点是什么?
最佳答案
在撰写本文时(2016 年),许多项目都是使用不良版本的 MVC 模式编写的。 Activity/Fragment/Controller 的代码行太多。这个问题通常被称为上帝 Activity 。 MVP 通过将类与 Model、View 和 Presenter 解耦来解决这个问题越来越受欢迎。
但 MVP 本身还不够,我们还看到了交互器和存储库模式的出现。
What is an Interactor? How does it fit within the MVP Design?
您可以将交互器视为创建、读取、更新和删除 (CRUD) 模型的“Util”类。交互器将从存储库中从您的数据库、Web 服务或任何其他数据源中获取数据。Interactor 是获取模型的“动词”或“ Action ”。
interactor拿到数据后,会将数据发送给presenter。演示者决定何时或如何使用模型对 UI 进行更改。
使用交互器意味着业务逻辑是解耦的。因为它是解耦的;代码可重用、更简单且可测试。
What are the advantages/disadvantages of using an interactor vs putting the interactor code in the presenter?
您可以将“交互代码”放在演示器中,例如,如果您确信代码足够简单,不需要将其提取到单独的类中。但如果您决定使用交互器,则交互器可以在其他演示者上重用。
存储库呢?
存储库是负责 CRUD 操作的实现细节的类,例如连接到数据库。
存储库包含获取模型的实现细节。
class UserRepository {
fun connectToDb() {}
fun getUser(): User {}
}
有些人称之为数据源,但我相信这些术语是可以互换的。
更新(2021 年):尽管 MVP + Interactor 仍然有用。带有 Android Jetpack 的 MVVM 模式是 Google 的首选 UI 模式。
关于java - Android MVP : What is an Interactor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746546/
我是一名优秀的程序员,十分优秀!