产品经理技术脑:MVC
设计一个程序的结构,是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。
MVC模式就是架构模式的一种。
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。
-
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。
-
M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
-
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。
每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
|三者之间的调用关系
1.用户首先在界面中进行人机交互,然后请求发送到控制器,
2.控制器根据请求类型和请求的指令发送到相应的模型,模型可以与数据库进行交互,进行增删改查操作,
3.完成之后,根据业务的逻辑选择相应的视图进行显示,此时用户获得此次交互的反馈信息,
4.用户可以进行下一步交互,如此循环。
|用登陆案例看MVC框架如何完成产品任务
1.用户首先在Login.html中输入用户名和密码,点击登陆,
2.此时框架根据action的路径,在struts.xml中找到对应的Login,然后根据对应的class的路径进入相应的login.Java,在这里判断之后,返回success或error,
3.然后根据struts.xml中的result值,指向相应的jsp页面。
图中,用户请求首先到达前端控制器FilterDispatcher。
FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。
|MVC是一种思维框架
如果将MVC模式解释成"外观"、"机制"和"功能/数据"这三层结构,那么很多组织机构也可以通过MVC模式来建构框架。比如一家商场,完全可以分成三部分:
-
一部分是仓库,负责提供商品,这是"功能层"(或者"数据层");
-
另一部分是零售铺面,负责销售商品,这是它的"外观层";
-
两者之间就是"机制层",包括柜台和仓库之间一切互动的机制。
这样区分以后,这个商场的结构就变得非常清楚,可以针对不同的层进行优化,提高效率。