下载本文示例代码
模式的概念在软件行业被采用以后,得到的广泛的发展,现在已经存在许多种类型的模式应用,其中比较有名的箸作有:GoF(Erich
Gamma、Richard Helm、Ralph Johnson和John Vlissides四人,简称:Gang of Four[GoF])的<设计模式,1995>,Martin
Fowler的<分析模式,1997>,Frank Buschmann等人的<体系结构模式,1996、2000>、Jim O.Coplien、Niel
Harrison等人的<编程模式,1995、1996、1998、1999>和Deepak Alur等人的
等,其中最具影响的是GoF的<设计模式>一书,书中详细讨论了三种类型,共23种模式。好的设计源于工作中经验的积累,当设计使用标准的模板以模式的方式进行交流时,模式就成了交流和重用的强大机制,并且可以改善设计和开发软件的方式。模式可以帮助我们在一个特定的环境里整理并记录已知的可重现的问题及解决方案,并且通过模式来与他人交流这些知识,这些模式可以解决在不同环境中重复出现的问题。模式可以使设计重复使用,重复使用已知的解决方案可以缩短设计和开发应用的周期,有效的使用模式,可以使我们远离重复投资的怪圈。模式的关键在于简单性和可重现性。
举一个模式应用的简单示例。例如,在你的便携式电脑上运行一个进程中的对象,并且这些对象需要和运行在另一进程中的别的对象通信,也许这一进程并不在你的便携式电脑上,而在别的地方。你又不想让系统中的对象担心如何找寻网上的其他对象或者执行远程过程调用。这时,可以使用代理(Proxy模式,详见GoF的<设计模式>一书)模式来解决这个问题,你能做的事就是为这个远程对象在你的本地过程中建立一个代理对象,该代理对象和远程对象具有相同的接口。你的本地对象利用通常处理过程中的消息发送来和代理交谈。这时代理对象负责把消息传送给实在对象,而不管实在对象位于何处。
由于下面要讲的Java 2平台的企业版(J2EE)应用模式中很多用到了设计模式与重构(Refactoring)的概念,所以在此有必要再概要介绍一下重构的概念。重构已经被证明可以阻止软件的腐朽和衰败,关于重构方面的有名箸作当然首推是Martin
Fowler所写的<重构,1999>一书了,书中详细介绍了重构的七大类型,共70余种具体的重构手法,同时也指出测试机制在重构中的重要性。书中Martin
Fowler对重构的概念进行了详细说明:
重构是对软件内部结构的一种调整,目地是在不改变[软件之可察行为]的前提下,提高其可理解性,降低其修改成本。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整理过程中不小心引入的错误的机率降到最低,本质上说,重构就是在代码写好之后改进它的设计。重构之前,首先检查自己是否有一套可靠的测试机制,这些测试必须有我检验能力。
--- Martin Fowler
建立于Java编程语言和Java技术基础之上的J2EE平台是最适用于企业级分布式环境的应用结构,它被设计为面向多层体系的结构。J2EE包含下面关键技术:Java服务器页面(Java
Service Page,JSP)、Servlet、Enterprise JavaBeans(EJB)组件、Java消息服务(Java
Message Service,JMS)、JDBC和Java命名与目录接口(Java Naming and Directory
Interface,JNDI)。由于J2EE平台是分层系统,所以我们将J2EE的层次模型化,这个模型使得我们将职责逻辑地分到不同的层中,共分了五个层次:客户层、表示层、业务层、集成层和资源层。因为客户层和资源层并不是J2EE平台直接关注的问题,所以后面介绍的15个J2EE应用模式全部属于上面五层中的中间三层,其中表示层模式包含与Servlet和JSP技术相关的模式、业务层模式包含与EJB技术有关的模式、集成层模式包含与JMS和JDBC有关的模式。具体模式可参看下面表格:
表一:表示层模式
模式名
简单描述
截取过滤器(Intercepting Filter)
促进请求的预先处理和后处理
前端控制器(Front Controller)
提供请求处理的集中控制器
视图助手(View Helper)
把与表示层格式化无关的逻辑封装到助手组件
复合视图(Composite View)
从原子的子组件创建一个聚集视图
工作者服务(Service To Worker)
合并分发者组件、前端控制器和视图助手模式
分发者视图(Dispatcher View)
合并分发者组件、前端控制器和视图助手模式,把许多动作推迟到视图处理
下载本文示例代码