iOS设计模式--MVC、MVP、MVVM

目录

MVC

概述

优缺点

MVP

概述

优缺点

MVVM

概述

优缺点


        MVC、MVP、MVVM都是常见的软件架构设计模式,其通过分离关注点来改进代码组织方式。一种架构模式往往使用了多种设计模式。

MVC

概述

        MVC:Model-View-Controller

        MVC是通过controller的控制去操作model层的数据,并且返回给view层展示,模式图如下:

iOS设计模式--MVC、MVP、MVVM_第1张图片

        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应运而生。其模式图如下:

iOS设计模式--MVC、MVP、MVVM_第2张图片

        可以看出与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模式图如下:

iOS设计模式--MVC、MVP、MVVM_第3张图片

         MVVM相对MVP来说将presenter层换成了viewmodel层,并且view层和view model层是相互绑定的关系,也就是当viewmodel层更新时,view层会相应的变动ui。

优缺点

        优点

        1.view可以独立于model进行变化和修改,一个viewmodel可以绑定在不同的view上,降低耦合,增加复用。

        2.不仅解决model和view耦合问题,同时解决了维护两者映射关系的大量繁杂代码和DOM操作代码,提高开发效率、可读性,并保持优越的性能表现

        缺点

        1.不适用于简单的项目

        2.大型的项目视图状态较多时构建和维护成本大

你可能感兴趣的:(web前端基础学习,前端,mvc)