1. 程式人生 > >java 代理的作用 因素 以及對代理的理解

java 代理的作用 因素 以及對代理的理解

首先程式碼就不附上了,隨便一搜就可以找到大量的例子,淺談一下代理的重要因素,代理的實現,代理的作用概念性的理解:

代理作用:

(靜態代理)試想有這麼一個公共類(介面),裡面有很多方法,如果得到了這個介面的例項就可以呼叫介面的所用方法,但是,這個公共類又不想讓其中一些類呼叫某些方法, 這時代理模式就出現了,代理類實現了公共類(介面),並全部處理公共類的方法,如果代理類不想讓某些類呼叫到某些方法,代理類只需在改方法內部返回為空, 或者丟擲異常等,
總結一句: 為其他物件提供一種代理以控制對這個物件的訪問

(靜態代理實現)

1. 要有一個介面,介面內宣告一些方法,eg: doSomething();
2. 一個或多個class, 這些class 需實現這個介面;
3. 一個代理class,代理class 需實現這個介面;
代理class 在 doSomething() 內部呼叫 2 中的doSomething 方法, 一般在代理類會根據引數來決定呼叫哪個 class.

(動態代理)相對於靜態代理而言,動態代理控制住了程式碼量,比如上面3 中, 如果有很多個介面, 你豈不是要建立很多個代理類。
很簡單,動態代理類只需要實現InvocationHandler 就可以了,通過 Method.invoke() 反射來呼叫,在實現InvocationHandler.invoke 裡面也可以新增額外的邏輯,

小有點aop 的意思。