前一篇博客介紹瞭如何 經過註解反射來實例化一個對象。
前面提出的一個優化建議。
上一版本,每一個含有 @DAL 註解的變量都會 經過反射去獲得實例化對象。
要是同一個工程裏面 每次都對同一個類經過反射實例化一個 對象出來,這樣太浪費資源了。
如今咱們就模擬spring的 bean 工廠,把咱們已經實例化的對象緩存起來,下次要用到直接拿出來用不用在經過反射實例化出來了。java
在作這個工做以前 咱們要考慮考慮 用什麼 數據結構來 緩存咱們的對象。
顯然能夠用Map 來緩存咱們的對象。key 類名 ,value 對象 。git
ObjectCreator
用於緩存和初始化對象。
一個 static Map 類變量 保證全局只有一個緩存存放類。github
封裝一個 ReflectionHelper 幫助咱們 賦值對象。spring
而後 咱們的 BaseBLL 能夠寫成這樣了緩存
比前一版本簡潔了很多!數據結構
咱們測試一下是否是 ,同一個 AdminDAL 初始化處理的對象是否是同一個測試
改一下優化
UserBLL.net
AdminBLL對象
測試結果 :
咱們發現 從 UserBLL 和 AdminBLL 經過註解實例化的對象都是同一個。
咱們的目的達到了,在不一樣的BLL 裏面 對同一個DAL實例化是同一個對象。
接下來咱們 還要優化什麼呢?
思考思考。
歡迎關注個人新浪微博 :
@drawable
代碼地址: https://github.com/linving/java_club.git branch – 第二版