小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JPivot中的設(shè)計(jì)模式

 梅蘭竹^_^ 2010-07-26
JPivot - 是一個(gè)自定義的JSP的標(biāo)簽庫(kù),可以用來(lái)在JSP頁(yè)面中嵌入OLAP表格和圖表。用戶可以執(zhí)行典型的OLAP導(dǎo)航,如下鉆,切片和切塊。它使用Mondrian 作為其OLAP服務(wù)器。
 相關(guān)介紹性網(wǎng)址:

JPivot 的MVC結(jié)構(gòu)

    從Web應(yīng)用的架構(gòu)來(lái)講,JPivot完全遵循MVC結(jié)構(gòu),甚至十分苛刻。為了減少對(duì)特定第三方框架的以來(lái),JPivot自己實(shí)現(xiàn)了MVC框架,但它可以與其它MVC框架共同使用。

1.模型Model:
JPivot的Model部分處理Olap的模型定義,查詢及結(jié)果集;JPivot自己定義了一個(gè)Olap模型,然后分別提供了Mondrian及XML/A的JPivot model實(shí)現(xiàn),這兩個(gè)實(shí)現(xiàn)又通過(guò)Adapter與Mondrian系統(tǒng)及xml/a系統(tǒng)交互。

2.視圖View:
JPivot的View部分比較豐富,包括JPivot taglib、wfc taglib定義及相關(guān)的UI Component助手類。用戶可以在自己的JSP中使用tag構(gòu)建新的視圖。與其它Web框架不同的是JPivot在該層次提供了大量的Web組件,類似于JSF那樣。

3.控制器Controller:
JPivot的控制器部分非常有特色。在JPivot中,使用單件模式(Singleton)在每個(gè)用戶的HttpSession中維護(hù)唯一一個(gè)WcfController對(duì)象,然后以此對(duì)象為根,使用Composition模式,將所有的控件請(qǐng)求處理的RequestFilter組織成樹形結(jié)構(gòu)。

在JPivot中,所有的UI控件操作都使用DispatcherSupport來(lái)維護(hù)處理該控件中UI交互的一個(gè)或多個(gè)Handler(比如表示表格中擴(kuò)展鉆取的“+”圖標(biāo)的DrillExpandUI類中的dispatcher屬性與ExpandHandler內(nèi)部類),而每個(gè)UI控件的dispatcher又在其父控件的dispatcher中注冊(cè)。JPivot根據(jù)客戶端操作所請(qǐng)求的URL在以WfcController為根的RequestFileter樹中查找對(duì)應(yīng)的處理器。

Decorator模式

  1. OlapModel類與OlapModelDecorator類構(gòu)成Decorator模式,JPivot基于OlapModelDecoratorOlapModel提供了兩種裝飾器:

§  OlapModelProxy對(duì)在HttpSession中唯一添加OlapModel提供了支持,并限制了其它對(duì)象對(duì)OlapModel的初始化與重置操作;增加了OlapModel在改變時(shí)通知注冊(cè)的Listener所發(fā)生的改變這一職責(zé)。

§  CachingOlapModelOlapModel提供了在一定的周期內(nèi)(Model沒有發(fā)生改變時(shí))緩存Result結(jié)果集的職責(zé)。

PartBuilder類與PartBuilderDecorator類構(gòu)成Decorator模式,具體的裝飾器比較多,但裝飾器都是針對(duì)特定的Part來(lái)裝飾的。通過(guò)繼承這些裝飾器,可以為構(gòu)建Table的各個(gè)部分(行、列、單元格、切片)的xml進(jìn)行。JPivot結(jié)合Apache Digester,使我們可以不用修改任何現(xiàn)有代碼,僅需實(shí)現(xiàn)這些裝飾器及對(duì)應(yīng)TableExtension就可以對(duì)所生成的Olap Pivot Table在UI表現(xiàn)上進(jìn)行擴(kuò)充,并且可以增加或修改對(duì)相應(yīng)的交互操作進(jìn)行處理的Handler。

 

 
JPivot使用wfc.tree包對(duì)成員及層次的樹形展示進(jìn)行支持。JPivot定義了一些裝飾來(lái)增加樹形控件模型的職責(zé)。其中:
GroupingTreeModelDecorator裝飾增加的職責(zé)是在子成員數(shù)目比較大的時(shí)候,可以分組顯示子成員以提高效率。
OptimizingTreeModelDecorator裝飾增加的職責(zé)是可以根據(jù)過(guò)濾器(NodeFilter)動(dòng)態(tài)的隱藏掉不滿足過(guò)濾條件的分支及節(jié)點(diǎn)。
SimpleOptimizingTreeModelDecorator裝飾增加的職責(zé)是當(dāng)樹只有一個(gè)頂級(jí)根節(jié)點(diǎn)的時(shí)候,不顯示該根節(jié)點(diǎn),而是直接顯示第二層的子節(jié)點(diǎn),這樣用戶就不用每次都要做無(wú)謂的展開操作。
CachingTreeModelDecorator裝飾增加的職責(zé)是當(dāng)用戶在樹形中執(zhí)行展開等瀏覽操作時(shí),保存用戶每次操作請(qǐng)求的數(shù)據(jù),形成TreeModel節(jié)點(diǎn)的緩存,以提高以后再次操作的相應(yīng)效率。
 

Observer模式

 

JPivot中,大量使用Observer模式解除視圖與模型之間的耦合,處理兩者之間的依賴關(guān)系及內(nèi)容與表示同步。

1、Model類及其子類(JPivot自定義Olap 模型的Mondrian實(shí)現(xiàn)、xml/a實(shí)現(xiàn))ModelChangeListener及其子類(表格、鉆取/旋轉(zhuǎn)/排序排名等、圖形、成員樹等展示控件)構(gòu)成Observer模式(嚴(yán)格的說(shuō)應(yīng)該是Listener模式),作用是在模型發(fā)生改變時(shí),同步更新所有的UI控件展示。
 
 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多