MVC 是一种软件架构模式或者叫 MVC 框架;由模型(Model)、视图(View)、控制器(Controller)构成。该模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。
MVC 三个对象分别做什么,给出伪代码示例
- 模型model用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。
- 视图view是它在屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。
- 控制器controller定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。
//M封装了数据及其处理方法等
m: {
data: () {};
create: () {};
delete: () {};
update: () {};
get: () {}
}
//V保存页面元素、初始化方法和重新渲染方法等
v: {
el: null;
init: (){};
render: (){}
}
//C控制程序的流程,处理用户行为和数据改变等
c: {
events: {};
init: () {};
autoBindEvents: () {}
}
EventBus 有哪些 API,是做什么用的,给出伪代码示例
EventBus是安卓发布/订阅事件总线的优化。简化组件间的通信;对发送和接受事件解耦;可以在Activity,Fragment,和后台线程间执行;避免了复杂的和容易出错的依赖和生命周期问题;让你的代码更简洁更快。
on() //用于事件订阅
trigger() //用于事件发布
off() //用于取消事件订阅
// 当一个事件执行,eventBus 触发
m:updatedeventBus.trigger('m:updated')
// 复制代码监听 m:updated,当 m:updated 触发时,执行事件
eventBus.on('m:updated',()=>{
v.render(m.data.n)
})
表驱动编程是做什么的
表驱动方法是一种使你可以在表中查找信息而不用使用逻辑语句来把他们找出来的方法。事实上任何信息都可以用表来选择,在简单的情况下,逻辑语句往往更简单直接,但是随着逻辑链的复杂,表的意义(数据与逻辑分离)便逐渐体现出来。使用表驱动法,它的复杂度就会比较稳定,相比使用普通的if else,表驱动法在数据比较多的时候更优,节省时间还有优化代码。
在MVC模式中,当类似的函数执行了多次,而他们只有参数和方法不同,那我们就应该把参数和方法抽出来,放到一个哈希表里再去遍历他。这样,我们通过观察哈希表,就可以大致知道这一模块的作用,同时避免了重复代码的出现。
我是如何理解模块化的
- 代码模块化之后无论是代码的整体性还是后期进行代码维护都变的清晰简单了起来。例如与逻辑相关的代码统一放到JS文件中,与视图相关的统一放到html文件中,与样式相关的统一放到css文件中。
- 业务模块化之后可以使业务流程更为清晰,便于开展工作,各个业务模块之间负责自己模块的业务,也避免了一些不必要的麻烦,使得工作的效率也会更高。
- 模块化我觉得是一种高效的思想,这在编程过程中提供了一种优化代码以及重构代码的方向。