首页 > 解决方案 > 在使用 VIPER 的许多控制器上使用的功能在哪里更好?

问题描述

我在我的 Swift 应用程序中使用 VIPER 模式。我需要一个在很多控制器中执行的函数来打开 cardViewStyle。我不知道在哪里添加这个功能更好......

可以是用例吗?一个交互器?,常见的......我无法想象 VIPER 和干净的架构将如何处理这样的功能。

目前该函数在视图控制器、演示器和线框中,因为只调用一次。

该功能将类似于:

//Presenter
func showLikeCard(controller: UIViewController){ 
     wireframe.showLikeCard(controller: controller)
}

//Wireframe
func showLikeCard(controller: UIViewController){ 
     controller.present()
}

谢谢!

标签: iosswiftdesign-patternsviper-architecture

解决方案


https://theswiftdev.com/the-ultimate-viper-architecture-tutorial中所述,

  • 视图区域适用于所有 UI。因为从多个 UIViewController 视图控制器中提取的共性与 UI 相关,所以应该将其隔离在视图区域中。尽管有您的//Presenter 评论,但这似乎与在 VIPER 的演示者区域中执行业务规则无关。(如果是这样,那么应该重新设计区域间接口,以便它引用纯粹的应用程序域实体,而不引用像 UIViewController 这样的以 UI 为中心的构造,因为 UIViewController 本身与业务规则执行无关。)关注点是 VIPER 如何解决整个 Massive View Controller 架构由于隔离不足和关注点之间的不充分划分而导致的过度混合问题。
  • 除非它从数据库、网络或传感器获取数据,否则它不会在交互区域内。

推荐阅读