MVC设计模式
全名model,view,controller。一种设计典范,一种业务逻辑,数据,界面分离显示的方法组织代码。
model-模型 dao,sevirce等
view-视图 jsp,html等
controller-控制器 servlet等
优点
- 耦合性低:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
- 重用性高:mvc模式允许使用不同样式的视图来访问同一服务器端的代码,包括任何WEB(HTTP)浏览器或者无线浏览器(wap)
- 生命周期成本低:MVC使开发和维护用户接口的技术含量降低。
- 部署快:使用MVC模式使开发时间得到相当大的缩减
- 可维护性高:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
- 有利软件工程化管理:由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
- 没有明确的定义:使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
- 不适合小,中型项目开发
- 增加系统结构和实现的复杂性:会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
- 视图和控制器间联系过于紧密:视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
- 视图对模型数据的访问效率低:依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
三层架构
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:
表示层(或界面层)(User Interface layer): 位于最外层(最上层),最接近用户。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务层(Business Logic Layer):它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,
持久层(或数据访问层)(Data access layer):其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。
目的是为了实现“高内聚,低耦合”
常用的Javaee框架:
表示层 | 业务层 | 持久层 | 数据库 |
jsp,servlet | sevirce | dao | mysql,oracle |
struts2 | hibernate | ||
springMVC | spring | mybatis |
相比而言,表示层比较模糊,不像业务层和持久层定义的那么具体。具体项目中,jsp+servlet属于表示层,而jsp树属于ciew,servlet又属于controller。
就springMVC来说,它属于表示层,包含表示层的部分功能,而表示层不全由springMVC组成,比如jsp技术。
MVC和三层架构
MVC是设计模式,属于微观的解决方案(如『博客』这一特定应用)。
3 Tier是系统架构,属于宏观的解决方案(如『网络』这一巨大的领域)。
N层结构 = MVC层 + Service/Manager/Logic层 + DAO层
一个常见的J2EE项目:- users.jsp (V)
- UserController.java (C)
- UserService.java (Service层)
- UserDao.java (DAO层)
- User.java (M)
以上仅为个人观点,最近在面试的过程中总被问到这一部分,所以总结了一下,有错误不足之处望指出,谢谢。