一呜师、代理模式
玩過扮白臉、扮黑臉的游戲嗎双炕?
你是一個白臉狞悲,提供很好且友善的服務,但是你不希望每個人都叫你做事妇斤,所以找了黑臉控制對你的訪問摇锋。這就是代理模式要做的:控制和管理訪問
——《Head First 設(shè)計模式》
代理模式類圖
代理模式類圖
相同主題接口
代理類實例既然要代理真實主題對象,那么代理類實例就必須可以在任何使用真實對象的地方替換它站超,因此代理類與真實主題類實現(xiàn)相同的主題接口荸恕。
攔截調(diào)用
使用代理模式創(chuàng)建代表(representative)對象,讓代表對象控制某對象的訪問死相,被代理的對象可以是遠程的對象融求、創(chuàng)建開銷大的對象或需要安全控制的對象呕诉。
在真實世界中瞳别,代理模式有許多變體,共同點是:都會將客戶對主題施加的方法攔截下來邢疙。代理類負責請求的預處理钮惠、過濾茅糜、將請求分派給委托類處理、以及委托類執(zhí)行完請求后的后續(xù)處理(這里的委托類素挽,就是上述類圖中的真實主題類)蔑赘。
二、代理分類
根據(jù)代理類的生成時機预明,將代理類分為:
- 靜態(tài)代理缩赛,代理類在編譯時生成
- 動態(tài)代理,代理類在運行時生成
從功能上區(qū)分撰糠,代理類就有很多類型了:
- 遠程代理管理客戶和遠程對象之間的交互
- 虛擬代理控制訪問實例化開銷大的對象
- 保護代理基于調(diào)用者控制對對象方法的訪問
- 酥馍。。阅酪。旨袒。。术辐。