gpt4 book ai didi

ios - VIPER - Interactor 是否应该只返回必要的信息?

转载 作者:行者123 更新时间:2023-11-28 21:48:55 26 4
gpt4 key购买 nike

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

在我的例子中,我有一张显示地点的 map 。要显示这些地点,我需要从 PlacesInteractor 中检索 PlaceItem 的列表,它可能只有坐标和颜色(用于更改图钉的头部颜色),演示者会将其转换为注释。

现在假设当用户选择 map 中的一个注释时,应该显示一个标注气泡,其中包含更多详细信息,例如地点名称和一个带有颜色的圆圈。

现在我应该创建一个 RetrievePlaceCalloutInteractor,它将只返回一个地方的信息,而不是多个地方的信息列表(对吗?或者我应该只为这两种情况使用一个交互器吗?)。

这个 RetrievePlaceCalloutInteractor 应该返回一个只有地点的名称和颜色(无坐标)的 PlaceCalloutItem,还是我应该有一个带有坐标、颜色和名称的 PlaceItem,它将由 RetrievePlaceCalloutInteractor 和 PlaceInteractor 返回,并且演示者会使用它来构造 CalloutStruct 还是 MKAnnotations 列表?

谢谢。

最佳答案

VIPER 是一种模式,不是很正式的模式,不是宗教,也不是完整的 app 架构。对我来说,VIPER 帮助我更多地思考更简洁的架构,但在这个过程中,我不得不做出更适合我的特定场景的决策,而不是太关心 VIPER,而是关心干净的架构。因此,根据我的经验和观点,您问题的答案是“取决于”。

在我的例子中,大多数“项目”(我称它们为显示对象或数据对象中的 DO)与“实体”(我称它们为模型对象中的 MO)几乎是一对一的关系。大多数交互器操纵一种类型的实体,并且他们有一个 MO-DO 映射器。如果交互器处理多个用例,我通常对不同的用例使用相同的 DO。

但是

我也有一些模块针对不同的用例使用不同的 DO,尽管它们与同一个实体相关,而且我还有一些 DO 结合了几个实体的信息,比方说我需要用户名来添加它对于博客文章的“编辑者”,我使用相同的 DO 来组合 PostUser 实体。

我认为 VIPER“想要”每个模块一个交互器,这会迫使您在其中有多个(相关的)用例,但是如果您想使用不同的项目(我的 DO)或只使用一个,则取决于您.

作为干净架构的纯粹主义者,您应该为每个用例设置不同的交互器、不同的请求和不同的响应。

所以,正如我开始的那样,这取决于,重要的是正确地“划定”边界,无论您为此使用一个还是十个项目都没有关系。

关于ios - VIPER - Interactor 是否应该只返回必要的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com