日期:2014-05-18  浏览次数:20727 次

以功能开发者角度理解J2EE核心模式(Core J2EE Patterns)

一. 目标

模块化、松耦合、紧内聚、提高可维护性和重用性。这些我们听得最多了,看起来很空,但模式确实做到了。实现主要用到:封装、分层、AOP

二. 理解

我粗劣看完《J2EE核心模式》第二版有一些理解。我要用通俗的语言,随意的文字来描述,即使我成不了专家我也这么做。随意写,不严谨,不负责。

为什么要使用模式?   答:高端大气上档次!具体参照文章头部

模式怎么来? 答:模式是总结出来的。 架构师用着用着有了经验总结出来。

    这么本书分两个部分第一部分跳过,我们来说说有哪些核心模式。

三. 模式

   表现层模式

1. 拦截过滤器

这个好理解,在web.xml里面不是有个<filter>标签么,就可以添加过滤器到过滤器链上。在过滤器类上又可以做文章了,继承,封装,怎么方便怎么写。

常用是作处理编码方式,乱码,哈哈。SpringMVC有个这种过滤器。

实现:AOP

 2. 前端控制器

就是加多一层处理分发。侧重集中控制,减少视图业务,提高代码重用;而拦截过滤器侧重预处理后处理。

3. Context 对象

无法理解,ha ha。实现:封装

 4. 应用控制器

跟前端控制一个样,加多一层。前端控制器之后就到它,它做的东西是操作控制和视图控制,就是来点实际的。

SpringMVC的conctroller层,strust2 的Action 。 实现:分层。

5. 视图助手

举个例子就明白了。JSTL中的 foreach 遍历。把视图和逻辑分开。这样前端做她的事,后台做他的事。实现:加类库。

6. 复合视图

一个大视图,里面有几个视图,有些是静态,有些是动态的。能否想到管理系统的上左右的布局?头部静态的,左右导航,右边内容。

这个容易理解:10个页面的头部,你想加个div,你不抽出来,要改10处,你抽出来,改一处。( 请原谅前端人员不是这样做 )

实现:例如JSP中的 include

7. 服务到工作者

逻辑在后台处理好,到页面的时候只管遍历。怎么觉得有跟助手有点类似,囧。哦,对了,因为工作者不一定是页面,可能是命令。

8. 分配器视图

SpringMVC的简单视图跳转,或URL直接访问JSP文件。没什么数据要加,直接分发。这也能成模式,果然大师!


业务层代表

1. 业务代表

对系统功能分大块。在这个类呢,你知道我说的是那个类,它可以处理URL,转化成某个功能,但它自己不做,叫别人去做。实现:封装,分层。

2. 服务定位器

不就是一个利用JNDI实现的找源的方法么。比如找数据源,JDBC,你给出一个名字,我给你一个服务。怎么着你不关,而且我可以缓存你找过的。实现:封装

3.会话门面

本质我觉得跟业务代表一个样,只是名字和内容不一样。

4.应用服务

服务层,哈哈,这个能理解。service 层,服务内部实现逻辑,供controller调用,而它又调用dao层。

5. 业务对象

POJO , Model .

6. 复合尸体 

难道是 POJO 引用了 POJO 2 ?

7. 传输对象

把要发送的字段封装成一个对象,本来就是这样做的,面向对象呀。

8. 传输对象组装器

给传输对象一个主管

9. 值列表处理器