天天看點

Java設計模式01-代理模式

代理模式是指,為其他對象提供一種代理以控制對這個對象的通路

在某些情況下,一個對象不适合或者不能直接引用另一個對象,而代理對象可以在客戶類和目标對象之間起到中介的作用

-----------------------------------------------------------------------------------

使用代理對象,是為了在不修改目标對象的基礎上,增強主業務邏輯

客戶類真正的想要通路的對象是目标對象,但客戶類真正可以通路的對象是代理對象

客戶類對目标對象的通路是通過通路代理對象來實作的。當然,代理類與目标類要實作同一個接口

以生活中的“代理律師”為例來了解“代理模式”。

打官司是件非常麻煩的過程:案件調查驗證、查找法律條文、起草法律文書、法庭辯論、簽署法律檔案、申請法院執行……但打官司的人隻關心法宣判結果。此時,打官司的人就可聘請“代理律師”來完成整個打官司的所有事務。當事人隻需與代理律師簽訂了“全權委托協定”,那麼整個打官司的過程,當事人均可不出現。

聘請代理律師時以下幾點需要特别說明:

(1)當事人與代理律師是在為同一件事情努力。

(2)法院所有的具體事務都是通過代理律師完成。

(3)在法院需要當事人完成某些工作時,代理律師會通知當事人,并為其出謀劃策,即增強當事人

使用代理模式注意:

代理類和目标類要實作同一個接口,即業務接口

客戶類對目标類的調用均是通過代理類完成的

代理類的執行既執行了對目标類的增強業務邏輯,又調用了目标類的主業務邏輯

根據代理關系建立的時間不同,可以将代理分為兩類:靜态代理與動态代理。就好比

當事人與律師之間的關系一樣,也分為法律顧問與代理律師兩類