浅析MVC

80 阅读2分钟

1. MVC 三个对象分别做什么,给出伪代码示例

M - Model 模型

用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法

// 数据和增删改查
m = {
    data: {},
    create() {},
    delete() {},
    update() {},
    get() {}
}
复制代码
V - View 视图

屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。

// 初始化,构建HTML骨架,渲染
v = {
    el: null,
    html: <template>,
    init(container) {
        v.el = $(container)
    },
    render(n) { }
}
复制代码
C - Controller 控制器

定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。

 c = {
    init(container) {})
    }, 
    events: {},  // 事件
    actions: {}, // 操作
    autoBindEvents() {} // 绑定
    }
}
复制代码

2. EventBus 有哪些 API,是做什么用的,给出伪代码示例

EventBus可以称作观察者设计模式,用于事件发布/订阅

EventBus 基本的 API :

  • on (监听事件)
  • trigger (触发事件)
  • off (取消监听)
    constructor(){
        this._eventBus =$(window)
    }
    on(eventName, fn){
        return this._eventBus.on(eventName,fn)
    }
    trigger(eventName,data){
        return this._trigger.tiggger(eventName,data)
    }
    off(eventName, fn){
        return this._eventBus.off(eventName,fn)
    }
复制代码

3. 表驱动编程是做什么的(可以自己查查资料)

《代码大全》对表驱动编程的描述:

表驱动方法是一种使你可以在表中查找信息,而不必用逻辑语句(if 或 case)来把他们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富于吸引力了。

表驱动编程的意义在于逻辑与数据的分离。(  类似于事件委托 

可简单理解为面对过多的条件表达时,可利用表查询替代,以避免面条式代码。

4. 我是如何理解模块化的

模块化基于最小知识原则, 是一种面向对象程序设计的指导原则,它描述了一种保持代码松耦合的策略。

每个单元对其他单元只拥有有限的知识,只了解与当前单元紧密联系的单元;

根据一套规则将复杂程序进行切割,分成不同的块,并通过引入进行组合,削弱代码块之间的相互影响。

  • 避免变量污染,命名冲突
  • 提高代码复用率
  • 提高维护性
  • 依赖关系的管理