freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

pentaho源代碼閱讀報告-資料下載頁

2025-03-23 00:33本頁面
  

【正文】 。Pentaho的Audict機制圖 24 Pentaho的Audit機制實現(xiàn)類圖Pentaho的Audit機制主要包含兩個主體:被Audit的對象和Audit執(zhí)行者。一個需要Audit的對象必須繼承IAuditable接口,Audit執(zhí)行者通過訪問IAuditable接口以獲得被Audit對象的Audit信息,并將其存入Audit信息庫。它們之間的關(guān)系如圖 24所示。從圖中可以看出Audit信息庫可能是一個文件(AuditFileEntry類),也可能是一個數(shù)據(jù)庫連接(AuditSQLEntry類)。圖 25 Pentaho平臺Audit機制順序圖如圖 25所示,在Pentaho平臺運行過程中,一旦需要記錄信息,則調(diào)用AuditHelper的靜態(tài)方法audit來完成Audit動作;AuditHelper進一步調(diào)用 ;AuditEntry類是維護單一IAuditEntry接口對象。在當(dāng)前的Pentaho平臺實現(xiàn)中,共有兩種AuditEntry:AuditFileEntry和AuditSQLEntry,前者把記錄信息寫入文件,后者則寫入相關(guān)的數(shù)據(jù)庫。Pentaho核心與Style分離的機制Phentaho核心與其外部“皮膚”是分離配置的。在部署Phentaho時必須將另一個名為pentahostyle的Web應(yīng)用同時部署,這樣Phentaho頁面內(nèi)的圖片圖標(biāo)才能夠正常顯示。這樣一來,Pentaho平臺的核心邏輯與其UI感觀分離開來,可以分別進行配置。在實現(xiàn)時,Phentaho只是在生成Html頁面時將其中的圖片文件鏈接的地址前加了一個pentahostyle目錄前綴而已,沒什么特別。只是一個小小的改變,便換來了巨大的好處,這也顯示出其設(shè)計人員的匠心獨具。Pentaho相關(guān)的設(shè)計模式Pentaho平臺的軟件設(shè)計綜合運用了多種設(shè)計模式,典型的包括EventListenr模式、抽象工廠模式,工廠方法模式、Singleton模式、Fa231。ade模式、代理模式等等。許多部分還混合使用多種設(shè)計模式,收到了很好的效果。本文中所講述的設(shè)計模式并不是Pentaho中所用到的全部,只是其中的幾個典型。EventListener模式EventListener模式在Pentaho平臺中的明確應(yīng)用主要有三處:第一處是在系統(tǒng)初始化和終止時,用來加載和卸載集成的插件;第二處是實現(xiàn)其Publish機制時,也是用EventListener模式;第三處是在用戶請求開始執(zhí)行和結(jié)束執(zhí)行時,給某些插件做動作的機會,這一機制在目前的Web版的Pentaho平臺中尚無實際用處,應(yīng)當(dāng)是留給后繼開發(fā)者的接口。圖 26 Pentaho的SystemEventListener模式如圖 26所示,Pentaho的EventListener機制的事件發(fā)出者是PentahoSystem類,事件響應(yīng)者是IPentahoSystemListener接口的實現(xiàn)類。PentahoSystem維護一個IPentahoSystemListener接口的列表,系統(tǒng)初始化時,PentahoSystem類通過SystemSettings類訪問配置文件,向列表中填入各個事件響應(yīng)類,可以說它就是Gluer。圖中所示的兩個事件響應(yīng)類:SharkSystemListener是第三方插件Shark注冊的響應(yīng)類,globalObjectInitializer則是用來處理全局環(huán)境信息的Pentaho系統(tǒng)類。圖 27 Pentaho平臺Publish機制的EventListener模式如圖 27所示,Pentaho平臺的Publish機制也是通過EventListener模式來實現(xiàn)的。每個可發(fā)布的資源都對應(yīng)一個Publish消息的相應(yīng)類,與SystemEventListener一樣,PentahoSystem類維護一個Publish消息相應(yīng)類的列表,這個列表是在系統(tǒng)初始化時,由SystemSettings類從配置文件中讀出所有的Publisher類信息,并由PentahoSystem類插入相關(guān)對象而得來的。當(dāng)用戶啟動Publish過程時,PentahoSystem類就向各個Publisher類發(fā)送Publish消息。抽象工廠模式抽象工廠模式在Pentaho平臺中的應(yīng)用很多,其中最典型的就是資源庫的實現(xiàn),下面以Runtime資源庫的實現(xiàn)為例,講述抽象工廠模式在資源庫實現(xiàn)中的應(yīng)用。圖 28為Runtime資源庫的抽象工廠模式類圖。其中,IRuntimeRepository所扮演的角色就是抽象工廠接口,實現(xiàn)它的RuntimeRepository則是一個具體的工廠類,用戶RuntimeContext要創(chuàng)建一個IRuntimeElement類型的實例,則需要調(diào)用RuntimeRepository的newRuntimeElement()方法。RuntimeContext不能直接實例化IRuntimeElement的實現(xiàn)類,因為它的構(gòu)造函數(shù)被聲明為protected。圖 28 Runtime資源庫的抽象工廠模式此外,Pentaho對URL的處理部分的架構(gòu)也是抽象工廠的典型應(yīng)用。如圖 29所示,這里的抽象工廠類是IPentahoUrlFactory接口,PortletUrlFactory則是一個具體的工廠,工廠類所構(gòu)造的對象是IPentahoUrl接口的實現(xiàn)類。圖 29 Url處理抽象工廠模式工廠方法模式工廠方法模式在Pentaho平臺中的應(yīng)用十分廣泛,許多類的創(chuàng)建都是以這種模式進行的,這里只列舉其中的一個:ContentRepository。如圖 30所示,ContentRepository類擁有一個靜態(tài)方法用于構(gòu)造自身對象。這有點像Singleton模式,但由于這個方法沒有保證該類對象的個數(shù)特征,因此不應(yīng)當(dāng)算作Singleton模式,而應(yīng)當(dāng)算作工廠方法的一種特殊形式。圖 30 ContentRepositoy中的工廠方法Facade模式圖 31 Pentaho核心得Fa231。ade模式如圖 31所使,PentahoSystem是整個Pentaho平臺核心層的對外接口,外部訪問Pentaho平臺的各種功能完全通過該接口完成,這是一個典型的Fa231。ade設(shè)計模式。Adapter模式能夠?qū)⒏鞣N第三方BI產(chǎn)品以插件形式集成進來是Pentaho的特色之一,但是各種第三方產(chǎn)品所提供的功能接口完全不同,這就需要使用Adapter模式將它們的接口統(tǒng)一到Pentaho的框架之下。圖 32 Pentaho集成各種插件的Adapter模式圖 32所示為Pentaho集成Quartz插件所使用的Adapter模式類圖。RuntimeContex所使用的接口為IComponent,而Quartz所提供的接口與此不同于是用類JobSchedulerComponent作為Adapter將Quartz的接口與IComponent統(tǒng)一起來。復(fù)合模式Pentaho平臺中單獨使用一種設(shè)計模式的地方很少,往往是多種設(shè)計模式綜合使用,集各種設(shè)計模式之所長,以達(dá)到更好的效果。其中Audit機制的實現(xiàn)方案就是十分典型的代表。圖 33 Audit所用的復(fù)合模式如圖 33所示,這里混合使用了工廠方法、Facade和Singleton設(shè)計模式,整個Pentaho平臺只有一個IAuditEntry接口實現(xiàn)類的對象來完成整個系統(tǒng)信息的記錄。該對象被封裝為AuditEntry類的私有成員auditEntry;整個Audit功能,完全通過AuditHelper暴露給使用者,外部不能看到除AuditHelper以外的類,AuditHelper就是這里的Facade;同時,AuditEntry類又是通過工廠方法來創(chuàng)建具體的IAudit對象的,這里的工廠方法不很明顯,因為它是一段靜態(tài)代碼,在AuditEntry類初始化時執(zhí)行。Pentaho源代碼文件結(jié)構(gòu)Pentaho的源代碼總體上分為八個包:core、data、jfree、messages、plugin、ui、何util。其中core內(nèi)所含代碼為Pentaho的核心代碼,另外七個包是Pentaho平臺的外圍擴展。通常在core包內(nèi)定義了Pentaho的各個接口,而在外圍的七個包中則定義這些接口的具體實現(xiàn)。Core包內(nèi)有包含13個子包:admin、audit、ponent、connection、publisher、runtime、repository、services、session、solution、system、ui、util。其中admin包內(nèi)定義了Pentaho平臺的數(shù)據(jù)源的相關(guān)內(nèi)容(這似乎與包的名字相左);audit、runtime、solution、system四個包則構(gòu)成了Pentaho核心層的主要部分,其他幾個包大部分是與前文所述的外圍七個包對應(yīng)的,定義了其中的接口??偨Y(jié)與收獲無論是從應(yīng)用創(chuàng)意的角度,還是軟件工程的角度來看,Pentaho都有自己的獨到之處。它綜合運用多種設(shè)計模式,使得軟件系統(tǒng)結(jié)構(gòu)靈活,可擴展性好,可維護性強??赡苁且驗榘姹静粩喔?,Pentaho平臺內(nèi)出現(xiàn)了一些多余的代碼,但瑕不掩瑜,Pentaho仍舊堪稱面向?qū)ο笤O(shè)計的典范。通過對Pentaho代碼的研讀,我們對設(shè)計模式的概念及其應(yīng)用有了更深刻的理解,對面向?qū)ο笤O(shè)計思想有了更全面的把握,對J2EE平臺的軟件開發(fā)模式也有了更清晰的認(rèn)識,可說是受益匪淺。
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1