zoukankan      html  css  js  c++  java
  • MVC、MVVM、MVP小结


    MVC

    MVC(Mode View Controller)是一种设计模式,它将应用划分为三个部分:
    数据(模型)、展现层(视图)、用户交互(控制器)。

    一个事件发生的过程:

    ① 用户和应用产生交互

    ② 控制器的事件处理器被触发

    ③ 控制器从模型中请求数据,并将其交给视图

    ④ 视图将数据呈现给用户

    M —— 模型 真正的逻辑处理,存放应用的所有数据对象

    不必知道V、C的逻辑,是应用中解耦出来的部分。

    V —— 视图 只负责呈现给用户的页面的显示和样式的展示,html、css、js模板组成

    除了模板中简单的条件语句,视图不应当包含任何其他逻辑。

    将逻辑混入视图是编程大忌,但不是不允许,只要这部分逻辑没有定义在视图内即可。将视觉呈现逻辑归类为“视图助手”(helper):和视图相关的独立的小工具函数。

    C —— 控制器 是M和V之间的纽带,进行页面节点事件的注册和控制,以及页面加载性能的实现。

    从视图获取事件和输入,进行处理,并更新视图。页面加载时,会给视图添加监听事件,如监听表单按钮点击、提交。


    MVVM

    MVVM(Model View ViewModel)耦合性比较松,灵活性更强。

    M —— 模型 负责业务逻辑和数据的封装

    V —— 视图 只负责界面和显示,与显示逻辑无关

    VM —— 视图模型 负责了所有的显示逻辑,在模型的基础上对模型数据进行封装,并定义了显示层的逻辑,负责模型与视图的交互。

    一个视图模型(VM)可以为多个视图(V)服务,视图层(V)只需要选择视图模型(VM)中的属性、方法并绑定。

    优点:

    ① 低耦合 view可以独立于model变化和修改

    ② 可重用性 很多view可以用同一个viewmodel

    ③ 独立开发

    ④ 可测试 可以针对viewmodel来写测试,测试界面


    MVP

    MVP(Model View Presenter)切断了view和model的联系,让view只和presenter(原controller)交互,减少在需求变化中需要维护对象的数量。

    MVP定义了presenter和view之间的接口,让一些可以根据已有的接口协议去各自分别独立开发,以此去解决界面需求变化频繁的问题。

    MVP优点:

    ① 模型与视图完全分离,可以修改视图但不影响模型

    ② 可以更高效的使用模型,因为所有的交互都发生在presenter(展示器)内部

    ③ 可以将一个presenter用于多个视图,而不需要改变presenter的逻辑

    ④ 如果把逻辑放在presenter中,就可以脱离用户接口来测试这些逻辑(单元测试)

    MVP缺点:

    因为对视图的渲染presenter中,所以视图和presenter的交互过于频繁。如果presenter过多的渲染了视图,往往会使得它与特定的视图的联系过于紧密,“动一发很可能要牵另一发”。

    本文链接:http://www.cnblogs.com/xsilence/p/5998907.html

  • 相关阅读:
    30分钟掌握ES6/ES2015核心内容(下)
    30分钟掌握ES6/ES2015核心内容(上)
    域名、主机名与URL
    localstorage sessionstorage cookie的区别
    http中post 和 get 请求方法区别
    leetcode33. 搜索旋转排序数组
    leetcode 56. 合并区间
    MySQL EXPLAIN
    array 数组
    判断一个字符串的所有字符是否都在另一个字符串中
  • 原文地址:https://www.cnblogs.com/xsilence/p/5998907.html
Copyright © 2011-2022 走看看