MVC模式和三层架构

MVC设计模式

全名model,view,controller。一种设计典范,一种业务逻辑,数据,界面分离显示的方法组织代码。

model-模型                dao,sevirce等

view-视图                    jsp,html等

controller-控制器        servlet等

优点

  1. 耦合性低:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
  2. 重用性高:mvc模式允许使用不同样式的视图来访问同一服务器端的代码,包括任何WEB(HTTP)浏览器或者无线浏览器(wap)
  3. 生命周期成本低:MVC使开发和维护用户接口的技术含量降低。
  4. 部署快:使用MVC模式使开发时间得到相当大的缩减
  5. 可维护性高:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
  6. 有利软件工程化管理:由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
缺点
  1. 没有明确的定义:使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
  2. 不适合小,中型项目开发
  3. 增加系统结构和实现的复杂性:会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
  4. 视图和控制器间联系过于紧密:视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
  5. 视图对模型数据的访问效率低:依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

三层架构

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:

  1. 表示层(或界面层)(User Interface layer): 位于最外层(最上层),最接近用户。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

  2. 业务层(Business Logic Layer):它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,

  3. 持久层(或数据访问层)(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是系统架构,属于宏观的解决方案(如『网络』这一巨大的领域)。

MVC模式和三层架构

N层结构 = MVC层 + Service/Manager/Logic层 + DAO层

一个常见的J2EE项目:
  • users.jsp (V)
  • UserController.java (C)
  • UserService.java (Service层)
  • UserDao.java (DAO层)
  • User.java (M)



以上仅为个人观点,最近在面试的过程中总被问到这一部分,所以总结了一下,有错误不足之处望指出,谢谢。