`
Copperfield
  • 浏览: 261049 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
C407adc3-512e-3a03-a056-ce4607c3a3c0
java并发编程陷阱
浏览量:25213
社区版块
存档分类

高性能分页标签extremeTable的Limit设计架构思想剖析

    博客分类:
  • J2EE
阅读更多

这是一个目前最好的一个开源分页标签的实现 ---extremeTable标签。今天谈谈它的 Limit的设计架构思想。

这个设计很通用,经过作者的多次重构,现在extremeTable的架构非常漂亮。这个标签现在缺点是有些参数对mvc控制器屏蔽了,应提供一致的对外接口。不过整体上设计还是很精致的,面向对象来处理 html元素,与spring非常的默契 ,非常便于开发和测试。

类图关系

1, 工厂 LimitFactory

TableLimitFactory AbstractLimitFactory LimitFactory

TableLimitFactory是最终实现的工厂,它 extends AbstractLimitFactory抽象类, AbstractLimitFactory implements LimitFactory接口。

TableLimitFactory主要是用来实例化,通过构造函数传入参数。同时创建 Registry来完成 jsp页面参数传入 Registry。当然还有一个功能就是从 web.xml的配置文件读取一些全局参数。首先读取配置文件参数,然后根据参数创建 LimitRegistry对象。

this.registry = new LimitRegistry(context, tableId, prefixWithTableId, state, stateAttr);

AbstractLimitFactory主要是用来获取 jsp页面上设置的参数,比如分页的信息(第几页,起始行,结束行,每页显示行数,查询条件,排序条件等),当然他是通过工具类 Registry来实现。

2, Limit

TableLimit Limit。其主要作用是一个参数参数器,就是把 Registry对象的参数传入 TableLimit,考虑到分层吧, TableLimit是该标签和 action通信的桥梁。就像我们的 j2ee项目 vo dao struts view等数据传输工具。

3, Preferences

TableProperties Properties 主要是来实现从 web.xml配置的文件中读取配置的一些全局参数。

InputStream input = this.getClass().getResourceAsStream(preferencesLocation);

if (input != null) {

properties.load(input);

}

其中 preferencesLocation是路径,在 TableLimitFactory初始化时候, 通过工具类 TableModelUtils.getPreferencesLocation(context)获取。

这个设计也是大多数需要配置文件的系统常用的方法。

4, Registry

LimitRegistry AbstractRegistry Registry

这个体系结构和上面的工厂模式一样,就是 LimitRegistry主要是用来实例化,通过构造函数传入参数。 AbstractRegistry是实际实现类,获取 jsp表单提交的参数,并提供 getter方法供 Limit来使用。 Registry是一个接口。

所以这设计模式,我们可以来学习,

经典表述: 抽象类 接口

类:初始化,定义构造函数,传入参数。

抽象类:定义业务方法在此。

接口:定义接口方法,这个不用多说。

(作者:asktalk   来自 http://www.blogjava.net/askltak 原创文章,转载请注明出处)

分享到:
评论

相关推荐

    eXtremeTable分页控件完整例子(数据分页+数据导出)

    **eXtremeTable** 是一个专为Java Web开发设计的高效、易用的表格控件,它在处理大量数据时表现出色,尤其在数据分页和导出方面。在这个完整的例子中,我们将会深入探讨如何利用eXtremeTable实现数据的分页以及多种...

    eXtremeTable中文文档

    eXtremeTable是一个高性能、可扩展的表格存储系统,主要用于处理大规模数据。这个系统的设计目标是提供快速的数据访问和处理能力,以适应大数据时代的挑战。它融合了数据库管理和分布式计算的概念,使得在海量数据上...

    hibernate + extremetable 实现分页

    本教程将详细讲解如何使用Hibernate ORM框架结合ExtremeTable实现高效的分页查询。 Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,避免了直接编写SQL语句的繁琐。而...

    ExtremeTable

    此外, ExtremeTable 使用了面向对象的设计思想,使得代码结构清晰,易于维护和调试。 对于初学者,可以通过阅读《eXtremeComponentsCN.pdf》来了解 ExtremeTable 的基本用法和API。这份文档详细介绍了如何创建表格...

    eXtremeTable中文文档.pdf

    2. **高并发访问支持**:通过优化的数据结构和算法设计,eXtremeTable 能够支持高并发的数据访问需求。 3. **灵活的查询语言**:eXtremeTable 支持一套自定义的查询语言,允许用户以直观的方式进行复杂的数据查询...

    eXtremeTable

    eXtremeTable文档 eXtremeTable文档 eXtremeTable文档 eXtremeTable文档 eXtremeTable文档 eXtremeTable文档

    eXtremeTable参考文档.pdf

    1. **高度自定义**:eXtremeTable支持多种样式和布局定制,开发者可以根据需求调整表格的外观和行为,如行和列的排序、过滤、分页等。 2. **数据绑定**:它能够与各种数据源进行绑定,包括数据库查询结果、Java集合...

    extremeTable

    **extremeTable**是一款开源的JSP自定义标签库,其主要功能是通过表格形式来高效地展示数据。这款工具的最新版本为1.0.1-M1。作为一款类似于`displaytag`和`valueList`等其他开源产品的解决方案,**extremeTable**...

    extremetable教程.pdf

    Callbacks是eXtremeTable的回调机制,包括RetrieveRowsCallback、FilterRowsCallback和SortRowsCallback,它们在数据检索、过滤和排序时起作用,提高了性能和用户体验。 9. 视图 视图功能允许定义不同的表格显示...

    eXtremeTable的使用方法

    我也刚开始看,感觉是个好东东,大家多多交流

    eXtremeTable的使用方法.rar

    **eXtremeTable** 是一个高性能、轻量级的表格处理库,它为Java开发者提供了强大而灵活的表格数据管理能力。这个压缩包“eXtremeTable的使用方法.rar”显然包含了关于如何有效利用eXtremeTable的相关指南,特别是...

    eXtremeComponents-1.0.4+extremetable使用手册+需要的jar包

    eXtremeTable分页控件完整例子包括了数据的分页、数据的Excel格式导出、数据的pdf电子书格式导出、数据的文本文件格式导出等功能,里面的源代码写得非常详细,好好看一下.... 功能强大,易于扩展的extremetable就是个...

    eXtremeTable使用指南

    eXtremeTable作为eXtremeComponents系列中的核心组件之一,专为高级数据展示而设计,尤其适用于表格形式的数据呈现。该开源项目由Jeff Johnston领导的ECCN小组维护,其最新版本为1.0.0。本文旨在详细介绍...

    displayTag,extremeTable

    displayTag,extremeTable相关文章

    springmvc+hibernate+extremetable 数据库增删改查

    Spring MVC、Hibernate 和 ExtremeTable 是三个在Web开发中常见的技术框架,它们分别负责不同的职责,协同工作以实现高效的数据管理。下面将详细解释这三个技术及其在数据库增删改查中的应用。 Spring MVC 是一个...

    Extremtable使用手册(中文)

    4. 在 JSP 页面中引入 eXtremeTable 标签库,根据容器是否支持 JSP 1.2 或更高版本选择不同的引入方式。 5. 将 extremecomponents.css 样式表复制到合适的目录,并在 JSP 页面中链接该样式表。 **配置与使用** 在 ...

Global site tag (gtag.js) - Google Analytics