码迷,mamicode.com
首页 > 其他好文 > 详细

JDK代理的小例子

时间:2018-06-09 23:18:49      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:public   getc   ini   xiaoxiao   void   voc   owa   tin   test   

1、首先新建接口

package relation;
/**
 * 接口类
 * @author Administrator
 *
 */
public interface Subject {
    
    /**
     * 购物
     * @param name
     */
    public void shoping(String name);
    
    /**
     * 睡觉
     */
    public void sleeping();
    
}

2.、要代理的实现类

package relation;

public class SuperMan implements Subject{

    @Override
    public void shoping(String name) {

    System.out.println(name + "在购物");    
    }

    @Override
    public void sleeping() {
        System.out.println("睡觉。。。");
    }

}

3、代理工厂

package relation;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

//代理类
public class ProxyFactory implements InvocationHandler{

 private Object target;
 
 //构造
 public ProxyFactory(Object target) {
     this.target = target;
 }
    
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    System.out.println("代理前。。。。。");    
    method.invoke(target, args);    
    System.out.println("代理后。。。。。");
    return null;
    }
    
      //给目标对象生成代理对象
    public Object getProxyInstance(){
        return Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                new ProxyFactory(target));
                }

}

三部搞定  下面就测试了

package relation;

public class Test {

    public static void main(String[] args) {

        Subject s = new SuperMan();
        
        //动态创建代理对象

        Subject sub =(Subject) new ProxyFactory(s).getProxyInstance();                    //实例
        sub.shoping("xiaoxiao");
        
        sub.sleeping();
        
    }

}

结果:

代理前。。。。。
xiaoxiao在购物
代理后。。。。。
代理前。。。。。
睡觉。。。
代理后。。。。。

 

JDK代理的小例子

标签:public   getc   ini   xiaoxiao   void   voc   owa   tin   test   

原文地址:https://www.cnblogs.com/zhangmms/p/9160895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!