java的代理模式实例

接口文件Hello.java

package com.company.staticProxy;

/**
 * Created by ken on 2016/7/25.
 */
public interface Hello {
    void say(String str);
}

实现文件HelloImpl.java

package com.company.staticProxy;

/**
 * Created by ken on 2016/7/25.
 */
public class HelloImpl implements Hello {

    public String name = "奥巴马";
    public String name2 = "小奥巴马";

    @Override
    public void say(String str) {
        //System.out.println("之前");
        System.out.println("hello " + str);
        //System.out.println("之后");
    }
}

动态代理文件DynamicProxy.java

package com.company.dynamicProxy;

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

/**
 * Created by ken on 2016/7/25.
 */
public class DynamicProxy implements InvocationHandler {
//  定义代理对象
    public Object target;
    
//  注入代理对象
    public DynamicProxy(Object object) {
        this.target = object;
    }

    /**
     * 
     * @param proxy 被代理对象
     * @param method 代理对象的方法(核心业务)
     * @param args 调用代理方法所需参数
     * @return 代理对象
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //before
        before();

        //核心业务
        Object obj = method.invoke(target, args);

        //after
        after();

        return obj;
    }

    //before
    public void before(){
        System.out.println("this is before");
    }
    //after
    public void after(){
        System.out.println("this is after");
    }
}


主文件MainTest.java

package com.company.dynamicProxy;

import com.company.staticProxy.Hello;
import com.company.staticProxy.HelloImpl;

import java.lang.reflect.Proxy;


/**
 * Created by ken on 2016/7/25.
 */
public class MainTest {

    public static void main(String[] args) {
        //被代理对象
        HelloImpl hello = new HelloImpl();
        //创建动态代理对象
        DynamicProxy proxy = new DynamicProxy(hello);
        // 获取被代理对象的代理
        Hello result = (Hello) Proxy.newProxyInstance(hello.getClass().getClassLoader(),hello.getClass().getInterfaces(),proxy);
        result.say("思路网络科技");
    }
    
    
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值