白话浅谈MVC模式
MVC由三部分组成:模型层(model),视图层(view),控制层(controller)。
其实光从这三部分的名字就可以看出个大概,模型层嘛,肯定是与数据库有关,视图层,嗯,视图,肯定和眼睛看有关,控制层,应该偏向和逻辑挂钩吧。如果能想到这样其实应该还不错,哈哈哈。
然后我们来具体从一个Web应用例子的交互逻辑来谈一谈MVC:
我们假设!假设!假设!百度网站就是基于MVC模式构建的(假设哦),小明想用百度查一查关于汽车的信息,于是输入了关键词“汽车”,搜索了很多与汽车相关的信息,这些展示在小明面前的页面,小明看到的页面、数据信息这些其实就可以看成视图层。
但是其实在小明点击了搜索之后,“汽车”这个关键词是传入到了服务器应用,然后服务器根据“汽车”这个关键词,到数据库中去拿关于汽车的数据,拿到数据后,再将数据交给前端去渲染出来,呈现在小明的面前,这个服务器接收前端指令然后根据指令获取数据再将数据返回给前端的过程就可以理解为控制层。
至于最后一个模型层呢?控制层中到数据库中去获取数据就要通过模型层才能实现与数据库之间的交互。由此可见模型层就是负责与数据库直接进行交互的。
再理一理这个例子逻辑就是:小明通过视图层向控制层发来了“汽车”这个关键词,告诉控制层我要获取所有的汽车相关的信息,控制层收到后,通知模型层,你去把数据库中所有的关于汽车的信息给我拿出来,模型层从数据库拿到所有数据后,将数据交给控制层,控制层再将数据交给视图层,视图层将数据渲染出来,呈现在小明的面前。
其实这样就可以看出:视图层是负责与用户交互的,模型层是负责与数据库交互的,而控制层是将视图层和模型层联系在一起。
当然这个例子过于简单,很多都简化了,在实际的开发中可能要复杂得多,但是大概的模式就是这样。
但是我们不难看出MVC模式具有很多的优点得以让它如此的流行:
- 低耦合性:各层各自独立,假设如果需要修改视图层的显示效果,根本不用去修改控制层或者模型层。
- 可维护性高:各层之间相互独立的特点使得维护工作变得相对轻松。
- 利于开发分工:由于各层相互独立,可以明确的进行分工。
- 可重用性高:比如多个视图可以共享一个模型。