前言
部门最近引进一个新物种,一种高可用松耦合的iOS框架,用于路由view,uiviewcontroller,service的路由器,梳理一下整体思路来看就是两个字,折腾。折腾小的view,小组建,小的service,好处后面说,缺点是代码多,理解困难,有点小题大作多意思。
优点是重视细节,重视划分职责,组件化有利于团队开发,协议声明有利于跨部门开发。
实现
实现上,是用于服务发现,注册声明,统一调用的方式。由于是协议声明,所以不用关心内部的实现,那有人说头文件也可以啊,其实限制是头文件可能会改名字改类别,带来使用者迷惑,不如跟api一样暴露一些方法声明即可,内部这几个方法固定其他的随意编写。使用上面是根据要调用的方式传参,比如push,present,addsubview,remove,pop,dismiss,而且会在各个生命周期调用阶段会有回调。
架构图
VIPER 的主要部分是:
视图:根据展示器的要求显示界面,并将用户输入反馈给展示器。
交互器:包含由用例指定的业务逻辑。
展示器:包含为显示(从交互器接受的内容)做的准备工作的相关视图逻辑,并对用户输入进行反馈(从交互器获取新数据)。
实体:包含交互器要使用的基本模型对象。
路由:包含用来描述屏幕显示和显示顺序的导航逻辑。
数据流向图
开发阶段注意
模块划分问题,不同模块之间的划分应该尽量简单
交互层,只放界面逻辑
实体数据层,只放界面或元素实体
解决代码复杂的问题,创建模板,把常用的规则的写法放到模板上面去
后记
这种架构其实是viper是MVVM的升级版本,用于解决单元测试单一职责问题
https://github.com/Zuikyo/ZIKRouter
使用 VIPER 构建 iOS 应用
viper模板