Servlet&JSP 第十二章 从模式在框架

来源:互联网 发布:淘宝九块九秒杀 编辑:程序博客网 时间:2024/06/07 22:32

一、认识设计模式

所谓设计模式,简单地说,就是前人留下的经验。以前的开发人员,做了哪些设计,在日后维护发生问题时,有改用哪些设计,发现类似的维护问题不再发生,这些设计的良好经验就是设计模式。每个设计模式会给予一个名称,并解决某一个情境下的问题。

1、Template Method模式(Gof设计模式)

1)在Template Method模式中,父类会在某方法中定义服务流程,该方法称之为模版方法,而流程中调用的一些方法仅为定义声明而无实现或简单实现,目的是希望子类可以自行定义这些方法。

HttpServlet的service()方法就是个模版方法,其中对请求类型做了判断,并决定该调用哪个doXXX()方法。

2)Gof设计模式可使用任何对象导向语言来实现。

2、Intercepting Filter模式(Java EE设计模式)

(1)过滤器实现了Java EE模式中的Intercepting Filter模式。

(2)Java EE模式实现时会需要特定的Java EE特性或技术,使得Java EE模式比较像是特定平台(Java EE平台)的惯用模式。

3、Model-View-Controller模式(架构模式)

MVC/Model 2模式属于架构模式的一种。架构模式主要强调应用程序软件组件或子系统的职责,以及软件组件或子系统之间的互动流程,而不强调实际如何实现这些组件。子系统的实现,以及子系统之间的沟通机制,可以通过Gof设计模式、Java EE设计模式来实现。

二、重构、模式与框架

1、Business Delegate模式

(1)Business Delegate模式为Java EE模式之一。

(2)Business Delegate角色接受客户端(通常是个控制器)请求,委托BusinessService运行后传回结果给客户端。Business Delegate模式可以有效的隐藏后台程序的复杂度,降低前台界面组件与后台业务组件的耦合度。

2、Service Locator模式

Service Locator模式的实现是Java EE模式之一。

3、Transfer Object模式

1)Transfer Object模式的实现是Java EE模式之一。

2)Transfer Object还可能实现了Serializable接口,可以通过序列化机制在网络上传递至远端,或从远端接收而来。Transfer Object本身通常实现时会符合JavaBean规格,以方便需要的组件进行存取。Transfer Object可以携带的信息并不一定只是状态,还可以携带指令以简化制定通信协议的需求(可以搭配Gof模式来实现),因而降低网络的流量需求。

4、Front Controller模式

1)在Front Controller模式中,Front Controller负责了集中管理所有请求相关的动作,处理完毕后再委托给Dispatcher对象,由Dispaatcher决定调用哪个Action对象或View对象。Action对象是实际决定如何根据请求调用后台业务逻辑以及决定转发对象的对象。以MVC来区隔职责的话,Front Controller、Dispatcher与Action对象否归属于控制器的角色。

2)基本是不需要自行实现Front Controller模式,有些支持MCV/Model 2架构的Web框架,都实现了Front Controller模式,而且还包含了更多的功能。Front Controller角色并不一定得是Servlet。

3)使用Front Controller的好处移至,就是可让控制器的逻辑更加简洁清晰,因为窗体处理的相关动作都会由Front Controller负责,后台的Action只需专心处理请求委托或转发。

5、库与框架

1)所谓的框架,就是实现某个“架构”或某个“流程”。使用了支持某个架构、流程的框架,就代表了应用程序必须依照框架定义的架构、流程来实现,才可以收到使用该框架的收益。

2)整个过程由你定,在必要时取得相关的API来使用,这时就是以库的概念在使用API。