浅析MVC

《浅析MVC》

  1. MVC 三个对象分别做什么,给出伪代码示例
  • 模型model用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。

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

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

const m = {
    data: {},
    create() {增 },
    delete() { 删},
    update() {改},
    get() {查}
}

const v = {
    el: null,
    // 初始化html
    html: `代码`
    ,
    init(container) {
        v.el = $(container)
    },
    render(n) { }
}

const c = {
    init(container) {})
    }, 
    events: { 事件}, 
    add() {详细执行},
    minus() {详细执行},
    mul() {详细执行},
    div() {详细执行},
    autoBindEvents() {逻辑}
    }

}
  1. EventBus 有哪些 API,是做什么用的,给出伪代码示例
  • EventBus是安卓发布/订阅事件总线的优化

  • 简化组件间的通信;对发送和接受事件解耦;可以在Activity,Fragment,和后台线程间执行;避免了复杂的和容易出错的依赖和生命周期问题;让你的代码更简洁更快

ventBus.on()监听事件
EventBus.trigger()触发事件
例如:当一个事件执行,eventBus 触发
m:updatedeventBus.trigger('m:updated')
复制代码监听 m:updated,当 m:updated 触发时,执行事件
eventBus.on('m:updated',()=>{
     v.render(m.data.n)
 })
  1. 表驱动编程是做什么的
  • 表驱动法是一种编程模式——从表里面查找信息而不使用逻辑语句(if和case)。在适当的环境下,使用表驱动法,所生成的代码会比复杂的逻辑代码更简单、更容易修改,而且效率更高。

  • 假如说,这些逻辑语句比较少,就是case比较少,那么使用普通的if else,可能反而简单。

  • 但是,假如case的情况比较多,使用表驱动法,它的复杂度就会比较稳定,相比
    使用普通的if else,表驱动法更优,节省时间还有优化代码。

c = {
     events:{
         'click #add1':'add',
         'click #minus1':'minus',
         'click #mul2':'mul',
         'click #divide2':'div'
     },
     autoBindEvents(){
         for(let key in c.events){
             const value = c[c.events[key]]
             const spaceIndex = key.indexOf(' ')
             const part1 = key.slice(0, spaceIndex)
             const part2 = key.slice(spaceIndex + 1)
             v.el.on(part1,part2,value)
         }
     }
 }
  1. 我是如何理解模块化的
  • 模块化是你写的程序里面,根据代码展现的功能或实现的效果,从而将其封装到不同的文件。

  • 模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。这则就是模块化。

  • 其好处是解耦,就是如果你要写这个程序里面的某个小功能,你只需要在这个小功能对应的文件里写代码就好了,这样并不需要将项目的所有代码全部过一遍,太浪费时间,不科学。假如说过了好长一段时间,正常人都会忘记自己写过的代码,假如你需要维护项目里的功能,模块化,就可以帮助你只需要维护对应的代码即可。

以上内容参考:https://juejin.im/post/5ec34e0b6fb9a04329767313
和https://zhuanlan.zhihu.com/p/99999903

你可能感兴趣的:(浅析MVC)