ios - 毒蛇架构 : how to obtain return info from a module

标签 ios architecture

我在处理从另一个模块提供的模块返回的某些信息时遇到问题。在我的例子中,我有两个模块, map 和搜索。 MapView 通知它要搜索地址,因此 MapPresenter 开始显示搜索模块的操作(其 View 以模态方式显示)。在搜索模块中,我进行文本搜索,获取结果,显示并选择一个。该选择必须返回到 map 模块。我如何才能在不打破界限的情况下实现这一目标?

考虑到,如果我错了,请纠正我,模块之间的通信只能通过路由来实现(而不是在带有通知、完成 block 等的模块之间“跳转”),我实现了这个场景:

viper-flow-chart (抱歉,也许顺序图会更好)

MapWireframe 实现了常规接口(interface),但也实现了另一个我称为 MapModuleInput 的接口(interface),因此当我开始搜索操作(蓝色)时,我将传递给 SearchWireframe 实现该接口(interface)的 MapWireframe

之后,在红色流程中,在 SearchView 中,我开始搜索案例,它从交互器等处获取结果。之后显示结果,用户选择一个(绿色), 所以选择的结果通过MapModuleInput接口(interface)返回给 map 。

那么,这是正确的吗?

谢谢!

最佳答案

如果我理解正确的话,您有一个搜索“模块”,它使用搜索交互器进行搜索,检索一些 POI 并将此结果返回给搜索呈现器。您有一个可以避免的问题,而不是在 SearchPresenter 中检索结果,只需与 map 通信并发送查询,然后在 MapView 中使用 SearchInteractor,现在您不必在模块之间发送对象。 如果您需要按照您在图表中绘制的方式执行此操作,请使用像核心数据这样的数据源来保存巨大的对象并稍后在另一个“模块”中检索它。

关于ios - 毒蛇架构 : how to obtain return info from a module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177377/

相关文章:

ios - 如何在 ios XCTestCase 中对两个对象不相等进行单元测试

php - 允许 PHP 应用程序插件的最佳方式

sql-server - Multi-Tenancy : What benefit does one-db-per-tenant provide?

ruby-on-rails - 合并多个 Rails 应用程序,并能够启用/禁用每个应用程序

ios - 用户未登录时,用户设置拒绝了错误 CloudKit 访问

ios - Rails两次转义换行符

c# - 正在构建的项目 "MSIL"的处理器架构与引用“AMD64”的处理器架构不匹配

java - 存储库上的事务

ios - 缺少文件 libresolv.9.dylib 和 libxml2.dylib

ios - 在 UITextfield 中创建 UIButton