轉(zhuǎn)帖|行業(yè)資訊|編輯:郝浩|2016-02-26 14:25:58.000|閱讀 455 次
概述:Spring中使用的設(shè)計模式也很多,比如工廠模式、單例模式、模版模式等,這里主要介紹代理模式和策略模式。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
策略模式顧名思義就是做某事的策略,這在編程上通常是指完成某個操作可能有多種方法,這些方法各有千秋,可能有不同的適應(yīng)的場合,然而這些操作方法都有可能用到。各一個操作方法都當(dāng)作一個實現(xiàn)策略,使用者可能根據(jù)需要選擇合適的策略。
下面是策略模式的結(jié)構(gòu):
Spring 中策略模式使用有多個地方,如 Bean 定義對象的創(chuàng)建以及代理對象的創(chuàng)建等。這里主要看一下代理對象創(chuàng)建的策略模式的實現(xiàn)。
前面已經(jīng)了解 Spring 的代理方式有兩個 Jdk 動態(tài)代理和 CGLIB 代理。這兩個代理方式的使用正是使用了策略模式。它的結(jié)構(gòu)圖如下所示:
在上面結(jié)構(gòu)圖中與標(biāo)準(zhǔn)的策略模式結(jié)構(gòu)稍微有點不同,這里抽象策略是 AopProxy 接口,Cglib2AopProxy 和 JdkDynamicAopProxy 分別代表兩種策略的實現(xiàn)方式,ProxyFactoryBean 就是代表 Context 角色,它根據(jù)條件選擇使用 Jdk 代理方式還是 CGLIB 方式,而另外三個類主要是來負(fù)責(zé)創(chuàng)建具體策略對象,ProxyFactoryBean 是通過依賴的方法來關(guān)聯(lián)具體策略對象的,它是通過調(diào)用策略對象的 getProxy(ClassLoader classLoader) 方法來完成操作。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn