第 1 章 整体框架
在java 的应用领域,有许多成熟的开源软件,利用它们一样可以打造优越、灵巧的应用框架,本文首先将先介绍 所要构建的系统结构和借助的开源产品。然后逐一讲解各开源软件的具体运用。希望本文能给那些正在学习这些 开源软件的同行提供参考。续该文之后笔者将结合这些开源软件,借助实际项目,做更深入的应用讲解。
四层系统:
- UI层:借助Struts实现
- 业务层:借助SpringFramework进行业务组件的组装关联。
- 数据持久层:借助Hibernate实现
- 域对象层:将所有域对象划分在一个层面
为什么采用这样的四层架构?
- 通过成熟的开源产品实现各层,同自己编写代码实现,相比之下能缩短开发周期,且架构所用到的开源产品均有 很广泛的用户群,经受过实践的考验,质量和性能更有保障。
- 层与层之间松散耦合,增加代码重用率。
- 各层分工明确,这样也利于团队的明确分工。
1.1. UI层
UI 是User Interface的缩写,这一层是面向用户的界面,是用户与系统之间交互的媒介。如,用户在界面发送请求, 系统接收请求,进行处理,然后通过界面将结果呈现于用户。这一过程包括了用户动作、数据传递、界面显示。大 家熟悉的MVC模式就是将这三者分离,减少三者耦合。
我们在该层借助了Struts来实现:
- 用ActionForm类封装与用户互动的数据元素。
- 用Action类实现业务逻辑、动作处理、链接转向。实现MVC中的C
- 借助Struts标签来完成数据呈现。实现MVC中的V。
关于struts具体的应用请参考相关章节。
1.2. 业务层
在 实际的项目开发中,每个领域都会有自己独特的业务逻辑,正因为这样,致使项目中代码高度耦合,原本有可能被重用的代码 或功能,因为与具体的业务逻辑绑定在一块而导致很难被重用。因此我们将实现这些具体逻辑的代码抽取出来分为单独的一层, 其目的是希望通过层,来降低它与系统其他部分的耦合度。
现实中世界是变化的,既然该层实现的是现实中具体的业务逻辑,那该层的实现代码 不可避免的会发生变更。怎样让该层适应 最大的变化,做到最小的改动?通常我们在编码的时候会尽量考虑到同一业务多种实现的兼容和可扩展的能力。因此我们在 该层借助了Spring,通过依赖注入、AOP应用、面向接口编程,来降低业务组件之间的耦合度,增强系统扩展性。
关于Spring的具体使用请参考相关章节。
1.3. 数据持久层
开发中与数据库进行数据交互必不可少,通常我们归为CRUD(添加、读取、修改、删除),这些操作占据了系统开发中大部分的时间, 同时我们还需要考虑与数据库交互的性能问题,如连接池、数据缓存等等。因此该层实现我们借助了Hibernate。
Hibernate 是一个ORM工具,它不仅仅是实现了数据库访问性能优化和与数据库交互的常用操作(CRUD),还将数据表与对象进行了 关联,让我们可以脱离数据表,而直接针对对象来与数据库交互,我们不再需要用字符串去描述表中字段,不再需要一个个”+“号去 组装Sql语句。这使得编码中可书写性提高。
该层的具体实现,请参看Hibernate相关章节。
1.4. 域对象层
该 层应该说是ORM思想的产物,ORM用对象关联数据表,我们将这些对象的集合归为一个专门的层即Domain Layer。 域对象是各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业 务的对象化,这有利于业务逻辑的重用。