代理模式和靜態代理詳解
1):什麼是代理模式:
代理模式是GoF四人組提出的23中設計模式之一。(如果一個類T不想被另一個類C直接訪問,或者是這個類
在不修改自身原始碼的情況下,增強自己的功能,達到這種目的就可以使用代理模式,可以通過中間類P來完成需求。此時類P稱為代理類T被稱為目標類,C被稱為客戶類) 也就是說,客戶類C想要與目標類T發生聯絡,都需要代理類P來完成,即,客戶類只能和代理類發生直接的聯絡。如下圖:
2):代理模式中的角色:
目標類
客戶類
代理類3):代理模式的目的:
<1>為了保護或者隱藏一個類
<2>在不修改原始碼的情況下,增強某個類的功能。
4):代理模式的分類:
<1>根據代理類建立的時間的不同,或者說是代理關係確立的時間的不同分為,靜態代理和動態代理。
其中動態代理又根據實現的技術的不同分為若干類,我們常用的有JDK的Proxy,CGLIB動態代理,javassist動態代理。。。。
靜態代理
1>:什麼是靜態代理:
如果代理模式中的代理類是由程式設計師手工編寫的,代理關係在程式執行之前就已經確立了,這種代理模式就是靜態代理。2>:使用靜態代理的要求:
由於代理類是要代替嗎目標類來和客戶類發生聯絡,所以代理類的要保證具有目標類的全部功能,,為了達到這個要求,
我們一般是通過讓代理類和目標類實現相同的業務介面來進行約束的,也可一讓代理類和目標類繼承同一個父類,目標類中的物件稱為目標物件,代理類中的物件稱為是代理物件,目標類中的方法稱為目標方法,代理類中的方法稱為代理方法。3>:靜態代理的使用要求:
代理類中應該含有目標類物件的引用,以便於代理方法中直接呼叫目標物件的目標方法。4>:靜態代理類的目標物件是在代理類中建立的,而不是由外部傳入的,這樣就就起到了保護和隱藏目標類的作用。