java代理模式之靜態(tài)代理

作為一個(gè)初級(jí)開發(fā)者,可能不會(huì)接觸到代理模式,但是在很多框架的使用中都不知不覺使用了代理模式,比如servlet的過濾器鏈,spring的AOP,以及spring mvc的攔截器等。所以了解代理模式對(duì)于個(gè)人的成長(zhǎng)是不可避免的。

在某些情況下,一個(gè)客戶不想或者不能直接引用一個(gè)對(duì)象,此時(shí)可以通過一個(gè)稱之為“代理”的第三者來實(shí)現(xiàn)間接引用。代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用,并且可以通過代理對(duì)象去掉客戶不能看到的內(nèi)容和服務(wù)或者添加客戶需要的額外服務(wù)。

 

原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/6013461.html

新浪微博:intsmaze劉洋洋哥

    通過引入一個(gè)新的對(duì)象來實(shí)現(xiàn)對(duì)真實(shí)對(duì)象的操作或者將新的對(duì)象作為真實(shí)對(duì)象的一個(gè)替身,這種實(shí)現(xiàn)機(jī)制即為代理模式,通過引入代理對(duì)象來間接訪問一個(gè)對(duì)象,這就是代理模式的模式動(dòng)機(jī)。 
 
    代理模式(Proxy Pattern) :給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用。代理模式的英文叫做Proxy或Surrogate,它是一種對(duì)象結(jié)構(gòu)型模式。

    代理模式示意結(jié)構(gòu)圖比較簡(jiǎn)單,一般可以簡(jiǎn)化為如下圖所示,但是在現(xiàn)實(shí)中要復(fù)雜很多。

網(wǎng)友評(píng)論