依賴注入(DI, Dependency Injection):假設你是一個特工人員,需要C4 炸

藥去炸燬橋樑。一種辦法是出發的時候自帶100 公斤C4,到了地方引爆,這相當於我們常

見的自己給變量賦值然後調用;另一種辦法呢,是當你到達目的地以後,呼叫總部空投200

公斤C4 ×××,然後你可以炸燬不止一座橋樑,這就相當於你在需要的時候被注入了200 公

斤C4,因為你不知道總部使用的是哪架戰機,但是它知道你在什麼時候和什麼地點需要這

些×××,換句話説,控制權在總部那,這就引出了另一個術語IOC(控制反轉,Inversion of

Control),意即你現在只需要埋頭寫自己的代碼,容器(總部)知道什麼時候給你合適的

對象(×××)。


 AOP(Aspect Oriented Programming,面向切面編程):假設你被聯邦調查局盯

上了,懷疑你和基地組織有一腿,那你就慘了,可以親身感受AOP 的威力。打電話,有人

聽;出門吃飯,有人在你飯裏下毒;開汽車,發現車後有人為你“保駕”。也就是説你發現

以前能夠直接操作的東西都被人過濾了,被人先行做了手腳。其實Web 開發中的過濾器就

是這樣做的,那就是一個AOP 的例子。這個中間被強插入的一層,就是切面(Aspect)。

好的情況下你還能發現切面(暗探)的存在,差的情況下你壓根不知道被人做了手腳。好

了,這就是AOP,就是那個對你下黑手的對象。

轉載於:https://blog.51cto.com/zhangleiy/387028