欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java反射機(jī)制中動態(tài)代理的示例分析

這篇文章主要介紹了Java反射機(jī)制中動態(tài)代理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)主營費縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),費縣h5小程序定制開發(fā)搭建,費縣網(wǎng)站營銷推廣歡迎費縣等地區(qū)企業(yè)咨詢

1. 代理模式

代理模式就是為其他對象提供一種代理來控制對這個對象的訪問。其實代理模式是在訪問的對象時引入一定程度的間接性,這種間接性可以附加多種用途。

它的特征是代理類與委托類有同樣的接口,代理類主要負(fù)責(zé)為委托類預(yù)處理消息、過濾消息、把消息轉(zhuǎn)發(fā)給委托類,以及事后處理消息等。代理類與委托類之間通常會存在關(guān)聯(lián)關(guān)系,一個代理類的對象與一個委托類的對象關(guān)聯(lián),代理類的對象本身并不真正實現(xiàn)服務(wù),而是通過調(diào)用委托類的對象的相關(guān)方法,來提供特定的服務(wù)。

2. 分類

代理類按照創(chuàng)建時期可以分為兩種,靜態(tài)代理類和動態(tài)代理類。

靜態(tài)代理類:由程序員創(chuàng)建或由特定工具自動生成源代碼,再對其編譯。在程序運(yùn)行前,代理類的.class文件就已經(jīng)存在了。

動態(tài)代理類:在程序運(yùn)行時,運(yùn)用反射機(jī)制動態(tài)創(chuàng)建而成。

3. 靜態(tài)代理和動態(tài)代理舉例

靜態(tài)代理:

業(yè)務(wù)接口類:

package com.bjpowernode.pattern;   public interface UserManager {       public void addUser(String userId, String userName);            public void delUser(String userId);            public void modifyUser(String userId, String userName);            public String findUser(String userId);  }

業(yè)務(wù)接口實現(xiàn)類:

package com.bjpowernode.pattern;   public class UserManagerImpl implements UserManager {       public void addUser(String userId, String userName) {          //System.out.println("start-->>addUser() userId-->>" + userId);          try {              System.out.println("UserManagerImpl.addUser() userId-->>" + userId);                            //System.out.println("success-->>addUser()");          }catch(Exception e) {              e.printStackTrace();              //System.out.println("error-->>addUser()");              throw new RuntimeException();          }         }       public void delUser(String userId) {          System.out.println("UserManagerImpl.delUser() userId-->>" + userId);      }       public String findUser(String userId) {          System.out.println("UserManagerImpl.findUser() userId-->>" + userId);          return "張三";      }       public void modifyUser(String userId, String userName) {          System.out.println("UserManagerImpl.modifyUser() userId-->>" + userId);      }   }

業(yè)務(wù)代理類:

package com.bjpowernode.pattern;   public class UserManagerImplProxy implements UserManager {       private UserManager userManager;            public UserManagerImplProxy(UserManager userManager) {          this.userManager = userManager;      }            public void addUser(String userId, String userName) {          try {              System.out.println("start-->>addUser() userId-->>" + userId);              userManager.addUser(userId, userName);              System.out.println("success-->>addUser()");          }catch(Exception e) {              e.printStackTrace();              System.out.println("error-->>addUser()");          }         }       public void delUser(String userId) {       }       public String findUser(String userId) {          return null;      }       public void modifyUser(String userId, String userName) {       }  }

客戶端類:

package com.bjpowernode.pattern;   public class Client {       /**       * @param args       */     public static void main(String[] args) {          //UserManager userManager = new UserManagerImpl();          UserManager userManager = new UserManagerImplProxy(new UserManagerImpl());          userManager.addUser("0001", "張三");      }   }

運(yùn)行結(jié)果:

start-->>addUser() userId-->>0001 UserManagerImpl.addUser() userId-->>0001 success-->>addUser()

動態(tài)代理:

業(yè)務(wù)接口類:

package com.bjpowernode.pattern;   public interface UserManager {             public String test(String userId);  }

業(yè)務(wù)接口實現(xiàn)類:

package com.bjpowernode.pattern;   public class UserManagerImpl implements UserManager {       public String test(String userId) {          System.out.println("UserManagerImpl.findUser() userId-->>" + userId);          return "張三";      }   }

BusinessHandler類:

package com.bjpowernode.pattern;   import java.lang.reflect.InvocationHandler;  import java.lang.reflect.Method;  import java.lang.reflect.Proxy;   public class BusinessHandler implements InvocationHandler {            private Object targetObject;            public Object newProxyInstance(Object targetObject) {                    this.targetObject = targetObject;          return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),                                 targetObject.getClass().getInterfaces(), this);      }            public Object invoke(Object proxy, Method method, Object[] args)              throws Throwable {          System.out.println("start-->>" + method.getName());          for (int i=0; i<args.length; i++) {              System.out.println(args[i]);          }          Object ret = null;          try {              //調(diào)用目標(biāo)方法              ret = method.invoke(targetObject, args);              System.out.println("success-->>" + method.getName());           }catch(Exception e) {              e.printStackTrace();              System.out.println("error-->>" + method.getName());              throw e;          }          return ret;      }   }

客戶端類:

package com.bjpowernode.pattern;   import java.lang.reflect.Field;    public class Client {       /**       * @param args       */     public static void main(String[] args) {                    BusinessHandler businessHandler = new BusinessHandler();          UserManager userManager = (UserManager)businessHandler.newProxyInstance(new UserManagerImpl());                                        //userManager.addUser("0001", "張三");          //userManager.delUser("0001");         // System.out.println(userManager.getClass().getName());                    String name = userManager.test("0001");      //String name = ((UserManagerImpl) logHandler.newProxyInstance(new UserManagerImpl())).test("0001");          System.out.println("Client.main() --- " + name);      }   }

運(yùn)行結(jié)果:

start-->>test  0001 UserManagerImpl.findUser() userId-->>0001 success-->>test  Client.main() --- 張三

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java反射機(jī)制中動態(tài)代理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

文章題目:Java反射機(jī)制中動態(tài)代理的示例分析
文章地址:http://aaarwkj.com/article28/jeipcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、ChatGPT、虛擬主機(jī)、面包屑導(dǎo)航、定制開發(fā)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
亚洲天堂av在线播放| 激情亚洲欧美日韩精品| 亚洲一区二区精品自拍| 欧美一区二区三区日| 国产高清av免费观看| 91麻豆国产福利在线| 亚洲免费成人一区二区| 亚洲品质一区二区三区| 海外成人永久免费视频| 日韩不卡在线观看免费| 特黄一级黄色大片免费看| 亚洲视一区二区三区四区| 亚洲中文字幕一区二区人妻| 欧美成人精品欧美一级乱| 草草影院最新地址在线观看| 亚洲免费三级黄色片| 综合激情四射亚洲激情| 国产大片久久午夜电影| 国产精品日韩欧美久久久| 在线一区二区三区高清视频| 亚洲国产成人欧美日韩另类| 欧美中文字幕精在线不卡| 欧美日本午夜福利在线观看| 久久精品久久久精品| 中文字幕日本乱码精品久久| 国产精品久久久天美传媒| 粉嫩一区二区三区av| 一区二区三区欧美黑人| 国产精品乱码精品久久久| 久久久精品国产亚洲av色哟哟| 性生活视频在线观看免费| 亚洲日本不卡在线一区二区| 国产自拍免费在线观看视频| 欧美视频综合一级91| 久久av少妇亚洲精品| 免费国产黄片在线播放| 丰满人妻二区三区性色| 精品人妻av区天天看片| 97精品免费在线观看| 国产精品va在线观看入口| 欧美日韩精品国产精品|