常见架构

常见架构
MVC
MVP
MVVM
VIPER

前面三种结构类似,都是把App的模块分成3个大类:

Models:负责数据或者操作数据的数据存取层。例如User或者UserDataProvider类。

Views:负责展示层(GUI)。对iOS来说,包括所有那些前缀是UI的东西。

Controller / ViewModel / Presenter:Model,View之间的胶水或者中间人。对用户在View所做的操作进行响应,改变Model,同时当Model变化时,更新View。

把模块分开的好处:

更容易理解
利于重用,尤其是View和Model
便于隔离开进行测试

MVC评价:
分布:View和Model确实是分开的,但是view和controller是紧密耦合的。
可测试性:由于糟糕的分布,你可能只会测试Model。
易用:在所有模式中代码量是最少的。另外,对所有人来说都很熟悉,所以即使是生手也能维护。
对于开发速度来说,Cocoa MVC是最好的设计模式。

MVVM, 响应式编程的框架
MVVM把view controller视作View
View Model调用Model的变化,同时根据Model的更新,更新自己。由于view和view model之间存在binding,view也会相应更新

MVP
划分(distribution)--大部分的任务都被划分到 Presenter 和 Model 中,而 View不太灵活(例子中的 Model 也不太灵活)
可测试性--非常出色,我们可以通过 View 来测试大部分的业务逻辑
易用性--在我们那个不切实际的小例子里,MVP 的理念是非常清晰的,但是代码量是 MVC 模式的两倍

VIPER
Interactor: 包含了与数据(Entity)或者网络相关的业务逻辑,例如创建数据的新实例,从服务器获取数据。对于那些任务,一般会使用一些Service或者Manager,这些一般不被认为是VIPER模块的组成部分,而认为是外部依赖。

Presenter: 包含与UI相关(同时与UIKit无关)的业务逻辑,会调用Interactor的方法。

Entities: 普通的数据对象,但不是数据存取层,因为那属于Interactor负责的。

Router: 负责VIPER各模块之间的转移。

你可能感兴趣的:(常见架构)