简单理解MVC:4个核心概念

127 阅读1分钟

一、MVC是什么?

MVC包括三类对象

  • M(Model)为模型,用于封装数据和数据处理方法
  • V(View)控制图形界面,如果M的数据变化,V会重新渲染
  • C(Controller)定义界面如何响应用户的控制,处理用户行为和M之间的交互

代码示例:

//初始化数据m
const m = {
    data:{
        n: '1'
    },
    // 各种方法
    init(){},
    delete(){},
    update(data){},
    get(){}
}

//初始化界面v,用于渲染HTML
const v = {
    init(){},
    html : `
    <div>
        <div class="output"></div>
    </div>
    `
}

//交互c
const c = {
    view: null,
    model: null,
    init(view, model){
        this.view = view,
        this.model = model,
        this.bindEvents()
    },
    render(){},
    bindEvents(){}
    }
}

二、eventBus和MVC的关系

eventBus是一种设计模式,主要用于优化MVC组件之间的通信。

代码示例:

eventBus.on('m:updated',()=>{
    v.render(m.data.n)
}) //监听事件 m:updated,当m:updated,执行事件

eventBus.trigger('m:updated') //当一个事件执行,触发事件m:updated

三、表驱动编程是什么

  • 表驱动是一种编程模式,从表里面直接查找信息,不需要使用逻辑语句。

  • 比如查找一年中每个月份的天数,如果使用表驱动法,直接把每个月的天数存储到一个数组中,取值的时候,直接下标访问即可。

  • 平时使用的HashMap、SparseArray都可以算是表驱动。

  • 表里可以存数据,也可以存指令,或函数指针等都可以。

四、如何理解模块化?

  • 将一个复杂的程序,根据一定的规则,封装成几个块,并组合到一起
  • 块的内部数据是私有的,只向外露出一些借口与其他模块通信
  • 模块化能够避免命名污染
  • 更好分离,按需求加载
  • 高复用性和可维护性