[size=medium]
前一段時間我們閱讀了digester的最初始的版本1.0版,現在我們再看一下1.1版,看看變化
來領悟作者的重構思路。
首先我們來看一下這個版本的更新:
[/size]
[size=medium]
1. 增加了乙個rules介面,原來是放到digester裡面的
用乙個hashmap>的來儲存所有的rule的,所有的add,removey以及
lookup操作都是在digester裡面進行的,現在把這個抽取出來,感覺非常合理,digester只是
依賴於rues,而相關的操作都是在rules裡面進行的;
[/size]
[size=medium]
2. objectcreationfactory, abstractobjectcreationfactory, factorycreaterule類,這個
其實也很好理解,主要是支援了通過傳遞乙個objectcreationfactory,通過factorycreaterule來
建立乙個object,這樣就可以使用使用者的工廠來建立物件了。
[/size]
[size=medium]
3. 剛才我們談到了,這個地方增加了乙個新的介面rules,它也增加了乙個基本的實現rulesbase類,這個裡面其實就是使用了乙個hashmap>的資料結構,不過它裡面有乙個cache,乙個rules,在加入的時候時候cache和rules同時寫的,然後
內部使用的是cache來實現增刪改查,對外在呼叫getrules的時候,返回的時候rules。
[/size]
[size=medium]
4. 裡面還增加了乙個extendedbaserules,不過在這個版本沒有使用,
就是增加了更多的匹配的選項,支援萬用字元等,這個還沒有仔細看,不過
應該變化不大。
[/size]
[size=medium]
5. 變化還有digester,它也相應的做出了一些調整,最大的變化應該時候
增加了乙個arraystack paramstack,這樣在callmethodrule和callparamrule的
時候就不會再把引數壓到盛放object的那個stack裡面了。
[/size]
[size=medium]
6. 還有乙個比較大的變化點就是增加了乙個ruleset和乙個它的標準實現
rulesetbase,它允許使用者根據namespaceuri來定義一組rule,在digester的
addruleset方法裡面會呼叫ruleset的addruleinstances,實際上在它的實現
裡面時候將一些rule增加到rulesbase裡面。
[/size]
[img]
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
Soul 原始碼閱讀11 Zookeeper同步資料
基於 zookeeper 的同步原理很簡單,主要是依賴zookeeper的 watch 機制,soul web會監聽配置的節點,soul admin在啟動的時候,會將資料全量寫入zookeeper,後續資料發生變更時,會增量更新zookeeper的節點,與此同時,soul web會監聽配置資訊的節點...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...