- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在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 来组合 Post 和 User 实体。
我认为 VIPER“想要”每个模块一个交互器,这会迫使您在其中有多个(相关的)用例,但是如果您想使用不同的项目(我的 DO)或只使用一个,则取决于您.
作为干净架构的纯粹主义者,您应该为每个用例设置不同的交互器、不同的请求和不同的响应。
所以,正如我开始的那样,这取决于,重要的是正确地“划定”边界,无论您为此使用一个还是十个项目都没有关系。
关于ios - VIPER - Interactor 是否应该只返回必要的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054526/
该应用程序的本质是一个 UITableView,当用户向下滚动 tableView 时,它会在每一行上显示 UIImages。我应该如何在不破坏 VIPER 架构的情况下将图像加载到单元格中? --V
1 介绍 Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 26.6k, 它支持以下特性: 设置默认值
VerCors 中的一个错误生成了一些银色,看起来像: field f: Int method test(n: Int, x: Ref) requires n == 100 requires acc(
这是我的config.yaml文件 server: port: 5000 这是我使用毒蛇解码的逻辑 type Configurations struct { Server ServerCo
在iOS VIPER项目中,每个模块都需要调用远程服务(例如刷新 token +检查用户登录)。实现这一需求的最佳实践是什么? 每个模块可以有多个交互器吗? 或者我们应该在每个模块(交互器)中实现相同
我在使用 viper 时遇到问题,我已经通过 viper 方法分配了变量,所以当我尝试在任何函数中获取值时,我得到的是空值。有谁知道为什么会这样?任何其他变量初始化工作正常,但 viper GetSt
我用毒蛇 https://github.com/spf13/viper用于在我的 GO 应用程序中管理项目配置,以及将配置值解码为结构体。 var config c.Configuration //
我正在寻找 go 和 https://github.com/spf13/viper 的配置解析器似乎强烈推荐。 我很惊讶地发现配置文件默认没有经过验证。 Viper 解析文件并从中提取请求的值,但我找
我有一个类似于以下的 yaml 文件: ComplexItemList: - Name: First Complex item Date: Whenever StructItemList:
在VIPER设计模式,Interactor 应该返回可能被多个演示者操作使用的所有信息,还是我应该为每个演示者设置一个单独的结构? 在我的例子中,我有一张显示地点的 map 。要显示这些地点,我需要从
我正在按照 VIPER 设计模式在 Swift 中构建应用程序。 VIPER 包含四个组件: 1) 查看2)线框3) 主持人4) 交互器 我的常量将出现在哪个组件中以及如何出现? 最佳答案 如果你的意
假设我们必须每 10 秒更新一次数据。我们应该在哪里创建/存储计时器,它会在 VIPER 架构中的什么地方触发相关方法?ViewController 应该这样做并通知演示者吗?还是 Presenter
作为初学者,我曾经在 ViewControllers 中执行转场。此外,Apple 鼓励这种方法,因为 UIViewController 有方法 performSegue 和 prepareForSe
我正在将我的项目更改为 VIPER 模式。 我的主要观点有很多观察者。我找不到应该将我的观察员放在 VIPER 中的什么位置。 因为我不想让我的观察者出现在视野中。以前我有单独的观察者类,当有通知时,
考虑到VIPER结构 我有两个模块,A 和 B。第一个模块 A,通过演示者,想要执行一个必须在模块 B 中完成的 Action ,所以告诉它的线框去做。问题是,谁负责实例化整个模块( View 、交互
我正在尝试使用 viper ( see viper docs ) 读取 yaml 配置文件。但是我看不到一种方法来读取问题类型下的 map 值序列。我尝试了各种 Get_ 方法但似乎没有人支持这一点。
我有一个 yaml 配置文件,其中包含我的程序的所有设置。例如: something: enabled: true 我正在使用 https://github.com/spf13/viper获取
我正在尝试从配置中获取一些名称未知的组(稍后会获取更多)。 我是 golang 的新手,有点吃力。我正在使用 Viper,因为它支持 yaml、json 和 toml。 json 配置: {
有没有办法从加载的配置文件中删除键/值对? viper.Set("key", nil) 不工作 最佳答案 尝试 delete(viper.Get("path.to.key").(map[string]
我注意到这可能是 viper 尝试解码为结构时的错误。为了更好地解释它,请考虑以下内容: 我有一个如下所示的 cli 命令 dd-cli submit-bug --name "Bug 1"--tag
我是一名优秀的程序员,十分优秀!