MVC架构与设计模式
MVC模式最早来自Smalltalk-80。Model是应用对象,View负责在屏幕上显示用户界面,Controller定义了用户界面对用户输入的响应方式。使用这三个对象,可以将用户交互的程序内部逻辑清晰的分离开来。
MVC模式内部可以使用多种设计模式。
比如Model和View对象之间经常使用Observer模式。一个或者多个View对象可以像Model对象订阅数据,当数据到达时Model会以事件的方式通知View对象,然后View对象会绘制用户界面或者生成html代码传递给浏览器显示。
在复杂的View的设计中,可以使用Composite模式来嵌套多个View对象。
View和Controller对象之间的关系实际上是Strategy模式。View可以根据不同的策略来选择不同的Controller对象,这样就达到了基于策略的改变对用户输入的响应的方式。我们也可以使用Factory Method模式为View对象指定默认的Controller对象。
常用JSP模式
JSP中也可以不使用MVC模式,下面分别是两种JSP模式。
下图是
JSP Model 1
的构架示意图:
用户通过浏览器之间访问
web
应用的
JSP
页面,
JSP
提供
UI
显示,
JavaBean
处理数据库访问和业务逻辑。这种开发方式最大的优势是直接、简单,对于小型应用,可以很方便、快速地进行开发。
下图是
JSP Model 2
的构架示意图:
JSP Model 2
和
JSP Model 1
最大的区别是引入了
MVC
模式的概念,即
M(Model:
业务逻辑
)
,
V(View:
系统
UI),C(Controller:
控制
)
分离,用户的所有请求提交给
Controller
,由
Controller
进行统一分配,并且采用推的方式将不同的
UI
显示给用户。这样做得好处是:
1
、 可以统一控制用户的行为,例如在
Controller
中添加统一日志记录等功能是非常方便的。
2
、 职责分离,有利于各部分的维护。用户不直接访问分散的
UI
,这样可以通过配置文件或则流程定义的方式,在不同的环节、时间将不同的页面推向给用户。
STRUCTS
框架就使用了MVC模式,并且成为事实上的标准。