【发布时间】:2015-05-17 06:01:30
【问题描述】:
在VIPER 设计模式中,交互器应该返回可能被多个演示者操作使用的所有信息,还是应该为每个操作提供一个单独的结构?
就我而言,我有一张显示地点的地图。为了显示这些地方,我需要从 PlacesInteractor 中检索 PlaceItem 的列表,它可能只有一个坐标和一个颜色(用于更改图钉的头部颜色),它们将被演示者转换为注释。
现在假设当用户选择地图中的一个注释时,应显示一个标注气泡,其中包含更多详细信息,例如地点名称和带有颜色的圆圈。
现在我应该创建一个 RetrievePlaceCalloutInteractor,它只返回一个地方的信息,而不是多个地方的信息列表(对吗?或者我应该在两种情况下都只有一个交互器?)。
这个 RetrievePlaceCalloutInteractor 是否应该返回一个 PlaceCalloutItem,其中仅包含该地点的名称和颜色(无坐标),或者我是否应该有一个带有坐标、颜色和名称的 PlaceItem,它将由 RetrievePlaceCalloutInteractor 和 PlaceInteractor 返回,以及演示者会使用它来构造 CalloutStruct 还是 MKAnnotations 列表?
谢谢。
【问题讨论】:
-
嗨罗德里戈,只是一个简短的评论。听起来您应该在此特定场景中简单地将名称包含在 PlaceItem 对象中。在我对 VIPER 的检查中,我通常每个屏幕都有一个交互器,它具有视图可能需要的所有信息的方法。除非它是多个屏幕所需的一组通用业务逻辑,否则我要么在视图中引用两个(或更多)交互器,要么让特定的视图交互器确定要向哪些其他交互器获取信息。我还没有确定哪种方法最好。
标签: ios design-patterns architecture software-design