MVC MVVM MVP都是为了上一篇文章讲的三层/四层架构服务的,总体用来让项目的结构清晰,易读,解耦,复用。
MVC-APPLE 全称Model(数据)-View(视图)-Controller(控制器),Model和View都被Controller持有,同时两者没有直接关系。Controller处理Model并赋值给View。这样就造成Model和View是可以重用。动态性更强,缺点就是Controller内的代码量会增大,同时会暴露属性,不安全。
MVC-变种 会把赋值的代码封装到View里面,View只暴露一个接口给Controller调用,这样做的优点就是减少Controller的代码量,同时把没必要暴露的属性隐藏起来,更安全。
MVP 全称Model(数据)-View(视图)-Presenter(持有控制器),Presenter提供方法持有住Controller,然后在Presenter里面的方法处理Model和View的交互,赋值,这样做可以减少Controller的代码量。
MVVM 全称Model(数据)-View(视图)-ViewModel(数据和控制器代持器),ViewModel提供方法持有Controller,同时ViewModel提供属性,当ViewModel传入数据后,ViewModel的属性会对接数据。ViewModel被View持有,View中监听ViewModel的属性,当ViewModel中的属性改变的时候,View页面的赋值也会随之改变。MVVM的优点可以减少Controller的代码量,同时消除View和Model的耦合。缺点则是复杂度比较高,需要注意监听器的增加和消除。
以上是我对MVC、MVVM、MVP框架的一些浅显的理解,欢迎指正。