Asktalk

          天行健,君子以自強(qiáng)不息!
          posts - 21, comments - 79, trackbacks - 0, articles - 2
            BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理
           

          這是一個(gè)目前最好的一個(gè)開源分頁標(biāo)簽的實(shí)現(xiàn)---extremeTable標(biāo)簽。今天談?wù)勊?/span>Limit的設(shè)計(jì)架構(gòu)思想。

          這個(gè)設(shè)計(jì)很通用,經(jīng)過作者的多次重構(gòu),現(xiàn)在extremeTable的架構(gòu)非常漂亮。這個(gè)標(biāo)簽現(xiàn)在缺點(diǎn)是有些參數(shù)對(duì)mvc控制器屏蔽了,應(yīng)提供一致的對(duì)外接口。不過整體上設(shè)計(jì)還是很精致的,面向?qū)ο髞硖幚?html元素,與spring非常的默契,非常便于開發(fā)和測(cè)試。

          類圖關(guān)系

          1, 工廠LimitFactory

          TableLimitFactoryAbstractLimitFactory,LimitFactory

          TableLimitFactory是最終實(shí)現(xiàn)的工廠,它extendsAbstractLimitFactory抽象類,AbstractLimitFactory implementsLimitFactory接口。

          TableLimitFactory主要是用來實(shí)例化,通過構(gòu)造函數(shù)傳入?yún)?shù)。同時(shí)創(chuàng)建Registry來完成jsp頁面參數(shù)傳入Registry。當(dāng)然還有一個(gè)功能就是從web.xml的配置文件讀取一些全局參數(shù)。首先讀取配置文件參數(shù),然后根據(jù)參數(shù)創(chuàng)建LimitRegistry對(duì)象。

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

          AbstractLimitFactory主要是用來獲取jsp頁面上設(shè)置的參數(shù),比如分頁的信息(第幾頁,起始行,結(jié)束行,每頁顯示行數(shù),查詢條件,排序條件等),當(dāng)然他是通過工具類Registry來實(shí)現(xiàn)。

          2, Limit

          TableLimitLimit。其主要作用是一個(gè)參數(shù)參數(shù)器,就是把Registry對(duì)象的參數(shù)傳入TableLimit,考慮到分層吧,TableLimit是該標(biāo)簽和action通信的橋梁。就像我們的j2ee項(xiàng)目vodaostrutsview等數(shù)據(jù)傳輸工具。

          3, Preferences

          TableProperties,Properties 主要是來實(shí)現(xiàn)從web.xml配置的文件中讀取配置的一些全局參數(shù)。

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

          if (input != null) {

          properties.load(input);

          }

          其中preferencesLocation是路徑,在TableLimitFactory初始化時(shí)候,通過工具類TableModelUtils.getPreferencesLocation(context)獲取。

          這個(gè)設(shè)計(jì)也是大多數(shù)需要配置文件的系統(tǒng)常用的方法。

          4, Registry

          LimitRegistry,AbstractRegistry,Registry

          這個(gè)體系結(jié)構(gòu)和上面的工廠模式一樣,就是LimitRegistry主要是用來實(shí)例化,通過構(gòu)造函數(shù)傳入?yún)?shù)。AbstractRegistry是實(shí)際實(shí)現(xiàn)類,獲取jsp表單提交的參數(shù),并提供getter方法供Limit來使用。Registry是一個(gè)接口。

          所以這設(shè)計(jì)模式,我們可以來學(xué)習(xí),

          經(jīng)典表述:抽象類接口

          類:初始化,定義構(gòu)造函數(shù),傳入?yún)?shù)。

          抽象類:定義業(yè)務(wù)方法在此。

          接口:定義接口方法,這個(gè)不用多說。

          (作者:asktalk   來自 http://www.aygfsteel.com/askltak 原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處)


          評(píng)論

          # re: 高性能分頁標(biāo)簽extremeTable的Limit設(shè)計(jì)架構(gòu)思想剖析  回復(fù)  更多評(píng)論   

          2007-12-26 21:22 by yeshucheng
          想問問哥們,你是用什么工具畫的類圖。呵呵

          # re: 高性能分頁標(biāo)簽extremeTable的Limit設(shè)計(jì)架構(gòu)思想剖析  回復(fù)  更多評(píng)論   

          2007-12-27 00:40 by xmlspy
          @yeshucheng
          這個(gè)好像是myeclipse中uml功能

          其他eclipseuml插件也可以

          # re: 高性能分頁標(biāo)簽extremeTable的Limit設(shè)計(jì)架構(gòu)思想剖析  回復(fù)  更多評(píng)論   

          2007-12-27 01:46 by Asktalk
          是,MyEclipse的效果

          # re: 高性能分頁標(biāo)簽extremeTable的Limit設(shè)計(jì)架構(gòu)思想剖析  回復(fù)  更多評(píng)論   

          2007-12-27 11:55 by sunhy
          樓主,給個(gè)limit分頁的小例子吧,俺比較菜,呵呵,謝謝了

          # re: 高性能分頁標(biāo)簽extremeTable的Limit設(shè)計(jì)架構(gòu)思想剖析  回復(fù)  更多評(píng)論   

          2008-05-02 02:32 by Cccie
          應(yīng)該是用 rose 畫的

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 楚雄市| 扶沟县| 崇左市| 襄垣县| 渭源县| 从江县| 马公市| 黎城县| 漠河县| 江阴市| 法库县| 漳浦县| 曲沃县| 廊坊市| 诸城市| 武城县| 涞水县| 罗江县| 德惠市| 馆陶县| 绥宁县| 岱山县| 华亭县| 砚山县| 新郑市| 和静县| 安溪县| 稻城县| 南木林县| 新密市| 肇东市| 盘锦市| 武城县| 叶城县| 苗栗县| 禄劝| 抚松县| 栾城县| 中超| 定结县| 余庆县|