浅析MVP

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

M: Model(数据模型)负责操作所有数据

```

const m = { 

  data: {},

  create() { },

  delete() { },

  update() { },

  get() { }

}

```

V: View(视图)负责所有UI界面

```

const v = {

    el: null,

    html: `代码`,

    init(container) {

        v.el = $(container)

    },

    render(n) { }

}

```

C: Controller(控制器), 负责除了M和V的事情的其他事情

```

const c = {

    init(container) { },

    events: { },

    add() { },

    minus() { },

    mul() { },

    div() { },

    autoBindEvents() { }

}

```

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

EventBus可以称作观察者设计模式,在Android下可以高效的发布/订阅事件。作用是可以代替传统Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。解决模块之间通信的问题,view组件层面,父子组件、兄弟组件通信都可以使用Eventbus处理。特点就是代码简洁。

DOM 的事件机制就是发布订阅模式最常见的实现,这大概是前端最常用的编程模型了,监听某事件,当该事件发生时,监听该事件的监听函数被调用。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)

    }

}

export default EventBus

```

3.什么是表驱动编程

表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越发杂,查表法也就愈发显得更具吸引力。简单来说就是减少重复代码

```

bindEvents(){

    v.el.on('click','#add1',()=>{

    m.data.n +=1

    v.render(m.data.n)

    })

    v.el.on('click','#minus1',()=>{

    m.data.n-=1

    v.render(m.data.n)

    })

    v.el.on('click','#mul2',()=>{

        m.data.n*=2

        v.render(m.data.n)

    })

    v.el.on('click','#divide2',()=>{

        m.data.n/=2

        v.render(m.data.n)

    })

}

```

表驱动编程改写为:

```

events:{

    'click #aa1':'add',

    'click #minus1':'minus',

    'click #mul2':'mul',

    'click #divide2':'div'

},

add(){

    m.update( data: {n:m.data.n +1})

},

minus(){

    m.update( data:{n:m.data.n -1})

},

mul(){

    m.update( data: {n:m.data.n *2})

},

div(){

    m.update(data: {n:m.data.n /2})

}

```

4. 如何理解模块化的

模块化(modular)编程,是强调将计算机程序的功能分离成独立的、可相互改变的“模块”(module)的软件设计技术,它使得每个模块都包含着执行预期功能的一个唯一方面(aspect)所必需的所有东西。

在一个完整的页面应用中,不同的节点功能,不同的结构可以规划为多个模块,每个模块的实现的方式以及用到的技术大不相同,使用模块化编程可以减小各个模块之间的影响和联系,可以更方便的优化代码和重构代码,提高我们代码的重用性,便于后期维护。

模块化的好处:避免变量污染,命名冲突;提高代码复用率;提高维护性;依赖关系的管理

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容