Spring都用到了那些設計模式(2)

上一節咱們學習了Spring中兩個工廠模式,接下來咱們繼續學習Spring中的其餘典型模式。app

3. 單例(Singleton)學習

保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。代理

Spring中的單例模式完成了後半句話,即提供了全局的訪問點BeanFactory。但沒有從構造器級別去控制單例,這是由於Spring管理的是是任意的Java對象。code

4. 適配器(Adapter)對象

將一個類的接口轉換成客戶但願的另一個接口。Adapter模式使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。blog

Spring中在對於AOP的處理中有Adapter模式的例子,見以下圖:接口

11.18圖片9_水印.png

 

因爲Advisor鏈須要的是MethodInterceptor對象,因此每個Advisor中的Advice都要適配成對應的MethodInterceptor對象。圖片

5.包裝器(Decorator)get

動態地給一個對象添加一些額外的職責。就增長功能來講,Decorator模式相比生成子類更爲靈活。aop

 11.18圖片10_水印.png

Spring中用到的包裝器模式在類名上有兩種表現:一種是類名中含有Wrapper,另外一種是類名中含有Decorator。基本上都是動態地給一個對象添加一些額外的職責。

6. 代理(Proxy)

爲其餘對象提供一種代理以控制對這個對象的訪問。

從結構上來看和Decorator模式相似,但Proxy是控制,更像是一種對功能的限制,而Decorator是增長職責。

 

 11.18圖片11_水印.png

Spring的Proxy模式在aop中有體現,好比JdkDynamicAopProxy和Cglib2AopProxy。

相關文章
相關標籤/搜索