A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘雷冲 中级黑马   /  2012-3-10 18:48  /  1180 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘雷冲 于 2012-3-10 18:58 编辑

代理模式是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,
并由代理对象控制对原对象的引用

代理分类:
1、静态代理
    1>需要建立大量的代理类
    2>重复的代码会出现在各个角落(违背的原则:重复代码最好不要出现多次)

2、动态代理
    JDK动态代理只能实现了接口的类进行代理,采用了JDK动态代理必须实现
    InvocationHander接口,采用Proxy类创建相应的代理类,参见LogHander.java
    采用JDK动态代理可以对目录类(UserManagerImp)方法进行增强
  1. import java.lang.reflect.InvocationHandler;
  2. import java.lang.reflect.Method;
  3. import java.lang.reflect.Proxy;

  4. public class LogHander implements InvocationHandler {

  5.         private  Object object;
  6.        
  7.         public Object newProxyInstance(Object object) {
  8.                 this.object = object;
  9.                
  10.                 return Proxy.newProxyInstance(object.getClass().getClassLoader(),
  11.                                 object.getClass().getInterfaces(), this );
  12.         }
  13.        
  14.         public Object invoke(Object proxy, Method method, Object[] args)
  15.                         throws Throwable {
  16.                
  17.                 System.out.println("start------------>>>>>>");
  18.                 Object obj = null;
  19.                 try {
  20.                         obj = method.invoke(object, args);
  21.                         System.out.println("chenggong");
  22.                 } catch(Exception e) {
  23.                         e.printStackTrace();
  24.                 }
  25.                 /*try {
  26.                        
  27.                         System.out.println("name=----" + method.getName());
  28.                         for(int i=0; i<args.length; i++) {
  29.                                 System.out.println("参数 " + args[i]);
  30.                                 System.out.println("大幅度");
  31.                         }
  32.                 } catch(Exception e) {
  33.                         e.printStackTrace();
  34.                         System.out.println("error---------");
  35.                 }*/
  36.        
  37.                
  38.                 return obj;
  39.         }
  40.        
  41.        
  42.        
  43. }
复制代码
Proxy.zip (1.97 KB, 下载次数: 72)

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马