web前端基础学习|iOS设计模式--MVC、MVP、MVVM

目录
MVC
概述
优缺点
MVP
概述
优缺点
MVVM
概述
【web前端基础学习|iOS设计模式--MVC、MVP、MVVM】优缺点
MVC、MVP、MVVM都是常见的软件架构设计模式,其通过分离关注点来改进代码组织方式。一种架构模式往往使用了多种设计模式。
MVC 概述
MVC:Model-View-Controller
MVC是通过controller的控制去操作model层的数据,并且返回给view层展示,模式图如下:
web前端基础学习|iOS设计模式--MVC、MVP、MVVM
文章图片

MVC工作原理:用户触发事件 -- view层发送指令到controller层 -- controller通知model层更新数据 -- 数据更新完显示在view层上
优缺点
优点:
通过controller控制全局,同时将view和model的变化分开,对复杂混乱的项目结构,有了明确的组织方式
缺点:
1.当业务逻辑增加时,大量的逻辑代码放进了controller,导致controller越发臃肿,后期维护成本随之提升
2.没有区分业务逻辑和业务展示,对单元测试不友好
MVP 概述
MVP:Model-View-Presenter
MVP是MVC的演化,MVC中的model和view两层存在耦合,之间相互依赖过多,由于view可以和model直接通信,造成了view既依赖于controller又依赖于model的局面,controller同样依赖于view和model,耦合性过高。在这种情况下MVP应运而生。其模式图如下:
web前端基础学习|iOS设计模式--MVC、MVP、MVVM
文章图片

可以看出与MVC不同的是,view层和model层不再相互可知,完全的耦合,presenter充当了桥梁的作用,用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并将数据返回给view层。
优缺点
优点:
1model和view分离,可以做到修改view而不影响model,解决了两者耦合问题
2.更加高效的使用model,view不依赖model,view能做到对业务的完全分离
缺点:
presenter中除了处理业务逻辑,还需处理view-model两层的协议,同样会导致presenter层的代码臃肿
MVVM 概述
MVVM:Model-View-ViewModel
MVVM模式图如下:
web前端基础学习|iOS设计模式--MVC、MVP、MVVM
文章图片

MVVM相对MVP来说将presenter层换成了viewmodel层,并且view层和view model层是相互绑定的关系,也就是当viewmodel层更新时,view层会相应的变动ui。
优缺点
优点:
1.view可以独立于model进行变化和修改,一个viewmodel可以绑定在不同的view上,降低耦合,增加复用。
2.不仅解决model和view耦合问题,同时解决了维护两者映射关系的大量繁杂代码和DOM操作代码,提高开发效率、可读性,并保持优越的性能表现
缺点:
1.不适用于简单的项目
2.大型的项目视图状态较多时构建和维护成本大

    推荐阅读