MVC
1. MVC是啥
人机交互应用涉及:可视化界面呈现、UI处理逻辑(用于处理用户交互式操作的逻辑)和业务逻辑,采用关注点分离(SoC, Seperation of Concerns)的方法 - MVC模式 将三者分离。常见的 jsp+javabean+servlet 就是典型的MVC模式。
MVC全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,一种软件设计典范 (软件构件模式)。采用业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时不需要重新编写业务逻辑,扩展性好。
- 低耦合性,可重用性,易维护;
- 较低的生命周期成本,易部署;
- MVC定义并不明确,且不适于小项目;
2. MVC模式
MVC 模式是一种使用 Model-View-Controller设计创建 Web 应用程序的框架模式:
M - 模型:存储或处理数据的组件,表示应用程序核心的”数据层”,包括业务数据、验证规则、业务逻辑和数据访问等应用程序信息;
V - 视图:显示数据,直接面向最终用户的”视图层”,是Model的具体表现形式;
C - 控制器:”控制层”处理输入,负责根据用户从”视图层”输入的指令,选取”数据层”中的数据,然后对其进行相应的操作并产生相应结果;控制器本身不输出任何东西和做任何处理,只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
注:View和Model可以直接交互,View可直接调用Model查询其状态信息,Model在状态改变时可直接通知View。
MVC的目的是将M和V的实现代码分离,松耦合关系,代码可重用,使同一个程序可以使用不同的表现形式,C确保M和V的同步,一旦M改变,V应该同步更新。MVC 分层有助于管理复杂的应用程序,简化分组开发。MVC模式同时提供对 HTML、CSS 和 JavaScript 的完全控制,目前几乎所有的Web开发框架都建立在MVC模式之上。
从消息交换模式来讲,Model对View的状态通知和View对Controller的用户交互通知都是单向的,推荐采用事件机制实现消息通知,即采用观察者模式通过注册/订阅的方式来实现:
- View作为Model的观察者通过注册相应的事件来检测状态的改变;
- Controller作为View的观察者通过注册相应的事件来处理用户的交互操作;
- 框架指代码重用,设计模式指设计重用;
- 设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式;
- 设计模式比框架更抽象;
- 框架模式:MVC,MVP,MVVM等;
- 框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率、降低耦合度。
MVP
MVVM
参考