当前位置: 首页 > 知识库问答 >
问题:

清洁架构-罗伯特马丁-如何连接用例

戈华茂
2023-03-14

我正在尝试实现罗伯特·马丁描述的清洁架构。更具体地说,我使用的是VIPER,这是一个iOS版本的Clean架构。

我遇到的问题如下:

用户开始查看带有位置(别针)的地图。如果他单击一个按钮,一个pin被删除,他被带到另一个视图来创建(或编辑,如果是对现有pin的单击)该位置(或取消)。在另一个视图中,用户可以编辑该地方的信息,然后单击“上一步”或“完成”(或“编辑”)。如果他单击“完成”,则PlaceDetailsViewController向PlaceDetailsPresenter发送一条带有位置信息的消息,而PlaceDetailsPresenter使用CreatePlaceInteractor创建位置。这个交互器返回用于标识位置的GUID。

我应该如何连接所有这些,位置信息(包括GUID)应该存储在哪里?为了进一步澄清:

  1. 谁应该通知MapPresenter pin在那里还是消失了?是PlaceDetailsPresenter还是应该将此信息传递给PlaceDetailsWireframe->MapWireframe->MapPresenter->MapView?
  2. 返回之前,此GUID应该存储在何处,是在PlaceDetailsPresenter中还是在PlaceDetailsViewController中?

编辑:

共有1个答案

李弘光
2023-03-14

我对毒蛇不太了解,所以我不能对此发表评论。然而,系统的总体状态应该保存在实体对象中,并由交互者操作。GUI的详细状态(选择矩形等)应该由控制器和演示者之间的特殊连接来管理。

在您的情况下,有两个屏幕。地图和地点编辑器。单击映射导致调用placePinController。它收集点击的位置和任何其他上下文数据,构造placePinRequest数据结构并将其传递给PlacePinInteractor,后者检查pin的位置,必要时验证它,创建Place实体以记录pin,构造EditPlaceReponse对象并将其传递给EditPlacePresenter,后者弹出Place编辑器屏幕。

如果在place editor屏幕上单击Done按钮,它将调用EditPlaceController,该EditPlaceRequest将编辑的数据收集到EditPlaceRequest数据结构中,并将其传递给EditPlaceInteractor。等等。

您特别询问了PIN的GUID。它将由Place实体创建并传递回editPlacePresenter PlacePinInteractor。

 类似资料:
  • 我一直在阅读洋葱架构,今天我发现了鲍勃叔叔的清洁架构。 对于我来说,我看不出它们之间有什么不同,它们看起来完全一样(除了命名惯例)。 干杯

  • 在Android项目中,通常只有两层:包含MVVM内容的表示层和包含存储库的数据层。从ViewModel直接访问存储库,在将数据传递给视图之前,在ViewModel中处理数据。 所以我的问题是:Android上的usecases/interactors的目的是什么?它们是否相关,或者是否可以完全集成到Android的ViewModel中?

  • 013. Roman to Integer 问题 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. Subscribe to see which companies asked this question 思路 首先要知道罗马数字的规

  • 012. Integer to Roman[M] 问题 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 思路 分析罗马数字的规律: Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1,000

  • 我正在分布式模式下使用 cp-kafka-connect Helm chart 在 Google Kubernetes Engine (GKE) 上部署 Kafka-connect。 一个工作的Kafka集群与代理和动物园管理员已经在同一个GKE集群上运行。我知道我可以通过发送帖子请求到endpoint来创建连接器,一旦它可用。但是,Kafka连接容器进入运行状态,然后开始加载jar文件,直到所有

  • 我把Spring靴和飞道一起用。我将FlyWay依赖项添加到我的Gradle构建文件中,如下所示: 我还添加了带有初始迁移文件的文件夹。迁移按预期进行。但现在我想使用任务进行清理。但是,当我运行这个时,我得到一个错误,说任务找不到。我用Spring靴还有别的办法吗?