Asktalk

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

          2007年12月26日

           

          這是一個目前最好的一個開源分頁標簽的實現---extremeTable標簽。今天談談它的Limit的設計架構思想。

          這個設計很通用,經過作者的多次重構,現在extremeTable的架構非常漂亮。這個標簽現在缺點是有些參數對mvc控制器屏蔽了,應提供一致的對外接口。不過整體上設計還是很精致的,面向對象來處理 html元素,與spring非常的默契,非常便于開發和測試。

          類圖關系

          1, 工廠LimitFactory

          TableLimitFactory,AbstractLimitFactory,LimitFactory

          TableLimitFactory是最終實現的工廠,它extendsAbstractLimitFactory抽象類,AbstractLimitFactory implementsLimitFactory接口。

          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項目vodaostrutsview等數據傳輸工具。

          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.aygfsteel.com/askltak 原創文章,轉載請注明出處)

          posted @ 2007-12-26 16:17 Asktalk 閱讀(4611) | 評論 (5)編輯 收藏

          主站蜘蛛池模板: 光泽县| 元谋县| 东港市| 瑞丽市| 广东省| 两当县| 响水县| 渭南市| 黎川县| 栖霞市| 十堰市| 白玉县| 普安县| 攀枝花市| 西盟| 略阳县| 大埔区| 黄平县| 广水市| 木兰县| 香河县| 芦山县| 分宜县| 温泉县| 溆浦县| 溧阳市| 石河子市| 桂平市| 淮南市| 容城县| 沾化县| 通州区| 博野县| 双柏县| 巴马| 九台市| 平原县| 九龙县| 班戈县| 吴堡县| 清镇市|