《浅析MVC》
- 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() {逻辑}
}
}
- 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)
})
- 表驱动编程是做什么的
表驱动法是一种编程模式——从表里面查找信息而不使用逻辑语句(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)
}
}
}
- 我是如何理解模块化的
模块化是你写的程序里面,根据代码展现的功能或实现的效果,从而将其封装到不同的文件。
模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。这则就是模块化。
其好处是解耦,就是如果你要写这个程序里面的某个小功能,你只需要在这个小功能对应的文件里写代码就好了,这样并不需要将项目的所有代码全部过一遍,太浪费时间,不科学。假如说过了好长一段时间,正常人都会忘记自己写过的代码,假如你需要维护项目里的功能,模块化,就可以帮助你只需要维护对应的代码即可。
以上内容参考:https://juejin.im/post/5ec34e0b6fb9a04329767313
和https://zhuanlan.zhihu.com/p/99999903