国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java 讀書筆記 14.7 動態代理

2019-11-06 07:03:22
字體:
來源:轉載
供稿:網友

動態代理

這一章的難度加上翻譯的水準使得我實在好像是在看天書啊,所以分開寫了;

靜態代理

首先我們來看看靜態代理:

public interface Sell //說呢,從古至今都有這么一個賣的接口,誰都可以賣東西;{ void sell(); void ad();}public class Vendor implements Sell { //賣主,小販實現了他的賣法還有廣告; public void sell() { System.out.以上就是靜態代理的內容了; 就好像供貨商,代理商之間的關系;賣不賣給你代理是可以決定的;

動態代理

public interface Sell{ void sell(); void ad();}public class DynamicProxy implements InvocationHandler { private Object obj; //obj為委托類對象 public DynamicProxy(Object obj) { this.obj = obj; } //通過invoke方法實現了動態的方法和委托類的調用 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("before"); Object result = method.invoke(obj, args); System.out.println("after"); return result; } public static void main(String [] arg) { DynamicProxy inter = new DynamicProxy(new Vendor()); Sell sell = (Sell) (Proxy.newProxyInstance(Sell.class.getClassLoader(),new Class[]{Sell.class},inter)); sell.sell(); sell.ad(); //既然是代理,那么我們可以反過來退出來sell這個引用一定是指向一個代理對象的; //Proxy.newProxyInstance()生成了一個代理對象 //我們注意到inter是由 DynamicProxy 實例的一個對象;它就是整個代理對象的處理器了 }}

下面的代碼改動會使得方法的動態修改變得明朗

@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // System.out.println("before"); try { Class c = Class.forName("Proxy.Sell"); Method method1 = c.getMethod("sell", null); Class c2 = Class.forName("Proxy.Sell"); Method method2 = c2.getMethod("ad",null); if (method.equals(method1)) { System.out.println("處理器正在調用sell方法"); } if (method.equals(method2)) { System.out.println("處理器正在調用ad方法"); } }catch (Exception e) { System.out.println(e); } Object result = method.invoke(obj, args); // System.out.println("after"); return result; }ouput:處理器正在調用sell方法In sell method處理器正在調用ad方法ad method

還是蠻清楚的吧;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涡阳县| 赤壁市| 永州市| 西峡县| 若尔盖县| 兴宁市| 鄂伦春自治旗| 西畴县| 南阳市| 成都市| 改则县| 奎屯市| 中超| 理塘县| 略阳县| 荆州市| 富阳市| 类乌齐县| 福安市| 莱阳市| 万全县| 西华县| 武邑县| 湖州市| 桐城市| 临汾市| 子洲县| 华亭县| 华池县| 吉木萨尔县| 丹江口市| 昭苏县| 赤壁市| 五大连池市| 江陵县| 锡林浩特市| 乐至县| 湟源县| 芷江| 西和县| 岗巴县|