struts2源码——XWork设计原理(二)

来源:互联网 发布:js给数组添加一个对象 编辑:程序博客网 时间:2024/06/06 20:39

数据流与控制流

MVC模型中的Model层,其本质是“数据”,正是数据在不同层次流转,才使mvc真正融合起来。

Controller是MVC的核心控制器,负责请求数据的接收,负责业务逻辑的处理,负责响应数据的收集,负责响应流程的控制,当数据流融入控制层之后形成逻辑处理和程序跳转的结果就是控制流。

数据流的载体:

(1)Map

Map是一个键值对,Servlet标准在设计HttpServletRequest规范时使用了类似Map结构来进行数据交互。

使用Map的缺点:

1.Map作为一个原始的容器数据结构,弱化了java作为一个强类型语言的功能。

2.使用Map的Key作为数据存取的依据,使得程序的可读性降低。

3.是Map结构进行数据交互,无法实现必要的类型转化。(Map无法提供java所具备的强类型语言的基本功能,这些类型转化需要应用程序自行处理)

虽然Map有这么多缺点,但是它却是最具备灵活度的一种数据结构,因为Map对数据格式,大小,数量都没有特殊规定,使得成为最具扩展性的数据载体。

(2)FormBean

FormBean是Map的升级版,是一个强类型的数据结构,在Struts1.x中被设计成MVC中的M部分,承担着数据载体的重任。

存在的问题:

1.FormBean被强制继承ActionForm。

2.FromBean被强制与框架的功能耦合在一起。

3.FormBean在参数复杂的情况下,几乎无法工作。

为后来纯POJO的出现奠定了基础。

(3)POJO

1.作为JavaBean,POJO是一个具备语义的强类型,不仅可以享受编译器的类型检查,还可以自由定义我们所需要表达的语义。

2.POJO不依赖任何框架可以在程序任何一个层次被复用。

3.POJO突破了FormBean对于页面元素唯一对应的限制,我们可以将一个页面中的元素自由映射到多个POJO中去。

控制层:

它的核心职责是处理业务逻辑,而其他的辅助逻辑则由框架帮忙完成。

事件处理流程的规范化:

1.划分事件处理流程步骤。(对事件处理流程中的不同处理职责进行语义抽象,从而将类似的流程步骤归为一类)

2.定义事件处理节点对象。例如:Interceptor,Action,Result等。

3.组织事件处理节点对象的执行次序。

原创粉丝点击