優化是個無止境的工作,在aop的路上,我們走得很遠,但是還有很多的工作,我們沒有做,比如,將aop的業務部分封裝成容器,將aop的服務部分改造成面向介面的,這樣就不受具體的形式上的限制了!這樣aop的優化,就又前進了一步,也是符合咱們的面向介面程式設計的思想,下面就和我一起研究下如何將介面的思想融入到aop的實現中。
在上篇部落格中,我們將aop的服務封裝到了容器中:
這樣的好處就是我們可以使用配置檔案擴充套件服務類,服務類不再受限於具體的形式與方法,而我們封裝的服務類和動態**,構成了這樣的乙個aop實現:
而這樣的實現,我們還要依賴具體的容器,不利於我們擴充套件,如果我們想換容器怎麼辦?我們就要重構我們的**,這不是我們程式設計中想要的,我們可以利用介面來遮蔽掉具體容器的使用,讓aop可以定製容器,如何實現?其實很簡單,大家看:
1,類圖改造
2,公共服務介面:
public inte***ce iproxymehds
3,公共服務容器類:
public class proxymehds implements iproxymehds
}catch(exception ex)
//method sage = c.getmethod("setage");
} public void afterbean()
}catch(exception ex)
}public hashmapgetbeforbeans()
public void setbeforbeans(hashmapbeforbeans)
public hashmapgetafterbeans()
public void setafterbeans(hashmapafterbeans)
public hashmapgetbeformethods()
public void setbeformethods(hashmapbeformethods)
public hashmapgetaftermethods()
public void setaftermethods(hashmapaftermethods)
}
3,客戶端
客戶端**並沒有發生任何變化:
public class client
}
總結:
大家看看這一路的變化,我們不難發現,在我們的aop優化之路上,我們走得和其他部落格不太一樣,我們在這裡實際就做了一件事,將耦合解開,將解開耦合的類封裝到容器中,將容器抽象為乙個介面,這樣的道路,是不是和哪些理念靠近了呢?對?就是咱們的設計模式,在設計模式中,我們抽象了23種設計模式,其實就是為了解耦和,然後將耦合封裝到執行時裝配!
大道至簡,在優化的道路上,比較好的指導思想就是簡化,傻瓜化,就像蜂群一樣,每個蜜蜂做一件簡單的事情,乙個蜂群就可以完成乙個極其複雜的社會活動!
java架構解密 雙容器優化aop
上篇部落格中,提出,優化是個無止境的過程,的確,隨著需求的變化,軟硬體基礎的公升級,我們越來越不考慮 的容量,而是考慮 的質量,但是隨著研究的深入,到了某個階段,我們也要考慮 的容量問題,這時,容器的概念,脫穎而出,在上篇部落格將服務類作為乙個介面傳入,實際在後台是乙個map容器,我們不僅包含了ma...
用Jacob介面實現Java對Word的列印操作
記錄下帶引數列印word文件的思路 1.使用jacob建立 activex部件物件 activexcomponent 2.開啟word文件 dispatch wrddocs wordcom.getproperty documents todispatch worddoc dispatch.invok...
java 服務端提供多個介面時小架構
背景 在開發的過程中已經需要提供多個介面給外圍系統。服務端在實現想使用統一的方法處理多個介面,例如判斷傳入的引數是否合理。1.定義兩個介面 package org.common.single.inf import org.common.single.condition.condition1 publ...