# 03.为什么选VIPER

## 一: 优点

* 拆分的职责更细,便于编写测试用例
* VIPER内部通过Protocol解耦,能灵活应对变化

## 二: 和MV(X)系列的对比

* 这里的Presenter和MVP中的不同
  * 这里的P并没有主要负责业务逻辑
  * 主要是用来V/I间传递事件,以及管理一些View交互逻辑
  * I承载业务及数据逻辑
  * I的可测试性会更强
* VIPER和MVX相比多了几个要维护的东西
  * View事件管理
  * 数据事件管理
  * 事件和业务的转化
  * 总结每个业务用例
  * 模块内分层隔离
  * 模块间通信

## 三: 好架构应该有的特点

* 能把代码按职责划分解耦
* 可测试性
* 易用,维护成本低,改动成本小

## 参考

> <https://juejin.im/post/5ad1b93d518825557b4d2d44>
