zoukankan      html  css  js  c++  java
  • 简介:MVC & MVVM

    一:何为MVC ?

    Model View Controller,模型 (model)-视图 (view)-控制器 (controller) 的缩写

    1) Model层: 用来存储业务的数据,通常来讲就是创建数据的模型(常常是字典转模型),提供一个类或对象方法 供Controller获取数据

    2) View层: a)封装快速创建cell的类方法.  b)拥有一个模型属性,用来接受Controller传来的模型数据

    3) Controller层: a)取出模型   b)创建cell  c)设置数据

    4)存在问题: MVC结构Model代码很少,Controller代码很多,不太好测试.随着业务增加,将会造成旱的旱死,涝的涝死;

    二:何为MVVM ?

    1)View | Controller:是一个业务逻辑,发起网络请求和其他代码

    2)ViewModel:是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码

    3)使用规则:   a): view和view controller正式联系在一起,把它们视为一个组件

    b): view和view controller都不能直接引用 model,而是引用视图模型

    c): view引用view model,view model引用了model,但反过来不行

    4)优点:  a) 低耦合:View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上

    b) 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑

    c) 独立开发:开发人员可以专注于业务逻辑和数据的开发ViewModel,设计人员可以专注于页面设计

    d) 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对ViewModel来进行测试

    三:结构进化

    当项目比较小,你可以按UI层/逻辑层/数据层 式的分层次开发,分层次开发适用于项目小,业务逻辑少的环境;

    当项目比较大,业务逻辑比较复杂,就比较适合MVC 式的分模块开发,对开发人员的综合能力较高;

    当项目逐渐扩大,业务增加,就会造成控制器代码量特多不易维护和测试,就需要进行封装,给控制器减减肥,MVVM就显得特别需要.

    每一模式都有它的生存土壤,不要唾弃按层次开发模式,也不要舍弃MVC,更不要跪舔MVVM,按需开发则是核心;

    唐巧关于MVC&MVVM的分享:( http://devtang.com/blog/2015/11/02/mvc-and-mvvm/ )

  • 相关阅读:
    正则表达式匹配负数和数字
    下拉框select chosen被遮盖
    获取JavaScript对象的方法
    管理机--Jumpserver由docker搭建
    腾讯云--腾讯云sdk-实现脚本修改腾讯云负载均衡权重
    Linux系统中使用confluence构建企业wiki
    腾讯云--对象存储cos绑定自定义域名
    python(一)python的操作符
    pytest(五)用例传fixture参数
    pytest(四)firture自定义用例预置条件
  • 原文地址:https://www.cnblogs.com/zhujungang/p/5105969.html
Copyright © 2011-2022 走看看