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

毒蛇--交互者应该只返回必要的信息吗?

百里泓
2023-03-14

在VIPER设计模式中,交互者应该返回多个演示者操作可能使用的所有信息,还是应该为每个演示者操作设置一个单独的结构?

这个RetrievePlaceCalloutInteractor应该返回一个只有位置的名称和颜色(没有坐标)的PlaceCalloutItem,还是应该有一个带有坐标、颜色和名称的PlaceItem,由RetrievePlaceCalloutInteractor和PlaceInteractor返回,并由演示者用来构造CalloutStruct或MkAnnotations列表?

谢谢你。

共有1个答案

严信瑞
2023-03-14

VIPER是一个模式,不是一个非常正式的模式,不是一个宗教或完整的app架构。对我来说,VIPER帮助我更多地考虑一个更干净的架构,但在此过程中,我不得不为我的特定场景做出更好的决定,而不是太关心VIPER,而是更关心干净的架构。所以,从我的经验和观点来看,你的问题的答案是“取决于”。

在我的例子中,大多数“项”(我称之为DO from Display Object或Data Object)与“实体”(我称之为MO from Model Object)几乎是一对一的关系。大多数交互者操作一种类型的实体,它们有一个MO-DO映射器。如果交互者处理多个用例,我通常对不同的用例使用相同的DO。

但是

作为一个清洁架构的纯粹主义者,您应该为每个用例拥有不同的交互者、不同的请求和不同的响应。

所以,就像我开始的那样,这取决于,重要的是正确地“划定”界限,不管你用一个还是十个项目。

 类似资料:
  • 当Kafka消费者未能反序列化消息时,客户端应用程序是否有责任处理Poison Message? 或者 Kafka 是否“递增”了消息偏移并继续使用有效消息? 是否有处理Kafka主题中的有害信息的“最佳实践”?

  • 我想在Postgres中使用单个insert语句插入多行。 这里的问题是,如果单行插入失败,则所有其他成功的插入都将被回滚。有没有办法避免回滚并使查询返回失败行的列表。 否则,我会编写一个insert语句的循环。我正在使用节点pg模块。如果postgres不支持,有没有推荐的方法来达到我的要求? 编辑-1 完成上述查询后,select 语句返回 0 行。我正在寻找一个解决方案,其中插入前两行。

  • 下面是Elasticsearch返回的数据结构示例。

  • 互信息 参考:https://zh.wikipedia.org/zh-hans/%E4%BA%92%E4%BF%A1%E6%81%AF 两个随机变量的互信息(Mutual Information,简称MI)是两个变量相互依赖性的量度。 $$I(X,Y)=H(Y)-H(Y|X)=H(X)-H(X|Y)=H(X)+H(Y)-H(X,Y)$$ 直观地说,如果把熵$$H(Y)$$ 看作一个随机变量不确定度

  • 问题内容: 在C程序中,如果要从终端提供一些输入,则可以通过以下方式提供: 同样,如果我们想获得函数的返回值,那么我们如何得到它呢? 在每一个中我们写或; 我怎么知道我在航站楼退回了什么? 编辑:1 我得到的是,我们可以得到的返回值,但是它仅允许我成功返回小于125的值(在Linux中)。so 无法成功接收到大于此值的返回值 为什么是返回类型?为什么不保留它? 编辑2 如果返回的值大于125 ,我

  • 在WordPress主题中,当一个联系人表单完成时,一条消息会写在页面上,但不会写在我想要的位置。但是当在PHP代码中更改消息的位置时,联系人表单中的段落(写在文章中)不再显示。事实上,我认为方法返回false,因此不会调用方法。 以下是原始代码: 我希望它是这样的: 如你所见,我只更改了确认消息的位置。但是在第二种方式中,具有的条件似乎不是真的,因为我在文章中写的文本没有显示出来。 有人能帮我解