1、view-helper模式
即视图-帮助者。目的是:分离视图与逻辑代码(只是简单分离,与MVC降低耦合有很大不同)。
视图:负责数据显示与提交,即jsp、el和jstl等页面的表示。
帮助者:提供功能模块、业务逻辑处理、数据交换等(此时业务逻辑层与表示层或数据层混在一起)。
举个例子,在 Web 1.0 时代,一个 ASP 或 JSP 页面里,HTML 和脚本代码混在一起,此时脚本代码越多,系统越混乱(即熵增加),最终连开发者自己都无法理解。此时就需要对系统重新架构,办法是引入 view helper 模式,分离 HTML 和脚本,HTML 成为 view,脚本成为帮助类。然后再简单整合在一起。通过重新分和合,整个系统层次清晰,职责明确,系统的无序度降低,容易维护。
具体实现例子:(1)、如在表现层使用view-helper模式,jQuery框架,jsp(el+jstl)做视图,引入jQuery.js做helper提供字符串处理功能、css动画效果、异步数据获取等。
(2)、如在jsp+servlet或jsp+javaBean的开发模式中,前端jsp做view,后端servlet或javaBean提供业务逻辑、数据处理等功能。
2、MVC设计模式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
- 模型:模型层负责封装应用的状态,并实现数据处理和业务逻辑。
- 视图:视图层负责数据的显示与提交。
- 控制器:负责控制视图层发送的请求以及程序流程的控制。
MVC一个笼统的设计模式,要求把应用的模型按一定的层次规则抽取出来,将业务逻辑聚集到一个部件里面(模型),控制器控制程序流程,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC提供了让模型和视图相分离的思路——提取出专门的控制器。我们把页面跳转关系管理、流程控制、表单数据的封装及验证、国际化等任务交给控制器处理。如java开发中,jsp专注视图、servlet专注控制、javaBean处理逻辑。构成jsp+servlet+javaBean的MVC开发模式。
Controller被设计为处理用户交互的逻辑。一个通常的误解是认为Controller负责处理View和Model的交互,而实际上View和Model之间是可以直接通信的。为了实现视图与业务逻辑的解耦,才加入controller这个中间层。
3、Dao设计模式
DAO即Data Access Object,数据访问接口。数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间,在model层将业务逻辑与数据访问分离。
四个组件:
DBUtils工具类---负责数据库的连接与关闭
Dao接口---定义增删该查的抽象方法,一个领域模型对应一个Dao接口。
Dao接口的实现类
VO值对象---一个VO对应一个数据表,便于把对数据表的操作转化成对java类的操作。
4、三层架构的软件设计体系
三层架构(3-tier architecture) 将整个业务应用划分为:表现层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。
区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
表现层(UI):表示层由处理用户交互的客户端组件及其容器所组成(html、css、js、jsp、el和jstl等);
业务逻辑层(BLL):业务逻辑层由解决业务问题的组件组成;
数据访问层(DAL):数据层由一个或多个数据库组成,并可包含存储过程。
三层架构思想,是一种笼统的架构思想,没有限制具体的设计,三层是纵向的、下层向上层提供服务。
一般具体实现:用MVC设计模式解耦表现层和业务逻辑层;Dao设计模式作数据访问层。
5、javaEE中的开发模式
开发模式:即软件设计套路;选择框架结构填充代码的软件开发方式(这里的框架是按照三层架构思想、MVC和Dao等设计模式具体实现软件的成熟框架结构)
1、适合规模较小的软件系统(两层架构)
jsp+servlet
将数据访问抽象出来:jsp+servlet+Dao设计模式
2、适合较大规模的软件系统(三层架构)
jsp+servlet+javaBean
将数据访问抽象出来:jsp+servlet+javaBean+Dao设计模式
3、流行框架:ssh(structs+spring+hibranate)
- jsp、el和jstl对应表示层
- struts对应控制层
- spring+hibranate对应业务逻辑层
总结:分层的具体界限并不一定,根据软件规模甚至功能模块的复杂性有所不同。总之,理解三层架构的软件体系思想,结合MVC、Dao等模式,根据项目规模、复杂性等具体问题具体解决。