lud*_*riv 5 architecture ios viper-architecture
我阅读了许多关于干净的iOS架构VIPER的文章,我理解主要的主题:关注点的分离.
我目前用它来做我的项目.我有模块,每个模块由视图,交互者,演示者,实体和路由器(与故事板)分开.
我有一个模块:地址和子模块添加添加地址页面.
所以,我的UIViewController实现了我的协议View.视图控制器保存所有弱IBOutlet标签和文本字段(用于新地址表单).
地址表单包含以下几个字段:
在我的例子中,演示者只是将用户交互依赖于执行API调用的交互器.
但是,在执行API调用之前,我想预先验证表单以避免消耗无用的网络资源.
我需要检查一下例如:
我的问题是,我在哪里可以提交表单验证码?
应该填写哪个VIPER组件?
先感谢您!
VIPER 的主要好处之一是关注点分离,因为信息被封装在适当的元素中。
交互器处理“业务逻辑”,其中包括大部分验证问题(部分验证可能由实体本身完成)。因此,视图会将其数据传递给展示器,展示器将其提交给交互器,后者将检查其业务有效性并要求实体通知它数据的一致性。
但是,使用库来加快开发速度可能会迫使您权衡封装以换取易用性。例如,SwiftValidator
提供相当广泛的验证规则,但要求您将UITextField
s传递给 Validator 组件。
因此,您可以选择依赖于交互器的更好的封装架构(可能由类似 的库增强Validators
),还是更面向 MVVM 的工具,例如SwiftValidator
.
由于这与业务逻辑相关,因此我认为验证应该交给交互器。您甚至可以创建称为表单交互器的工作程序 - 如果您的验证太大,但交互器是执行此操作的地方。通过委托,您可以通知用户是否出现问题、到底出了什么问题、错误消息等。
我也会参考http://clean-swift.com/clean-swift-ios-architecture/。
归档时间: |
|
查看次数: |
2004 次 |
最近记录: |