Java.动态代理

1.创建一个接口

package Mydynamicproxy1;

public interface Star {

    public abstract String sing(String str);
    public abstract void dance(String str);
}

2.创建一个BigStar类,要实现Star这个接口

package Mydynamicproxy1;

public class BigStar implements Star{

    private String num;

    @Override
    public String sing(String song){
        System.out.println("正在唱歌"+song);
        return "唱完了谢谢";
    }
    @Override
    public void dance(String dan){
        System.out.println("正在跳舞"+dan);
    }


    public BigStar() {
    }

    public BigStar(String num) {
        this.num = num;
    }

    /**
     * 获取
     * @return num
     */
    public String getNum() {
        return num;
    }

    /**
     * 设置
     * @param num
     */
    public void setNum(String num) {
        this.num = num;
    }

    public String toString() {
        return "BigStar{num = " + num + "}";
    }
}

 3.代理的类

package Mydynamicproxy1;

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

public class ProxyUtil {
    public static Star createStar(BigStar bigstar) {

        Star star = (Star)Proxy.newProxyInstance(
                ProxyUtil.class.getClassLoader(),
                new Class[]{Star.class},
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

                        if("sing".equals(method.getName())){
                            System.out.println("准备话筒,收钱");
                        }else{
                            System.out.println("准备场地,收钱");
                        }
                        return method.invoke(bigstar, args);
                    }
                }


        );


        return star;
    }

}

4.Test类

package Mydynamicproxy1;

public class Test {
    public static void main(String[] args) {

        BigStar bigStar=new BigStar("cxk");
        Star proxy=ProxyUtil.createStar(bigStar);

        System.out.println(proxy.sing("aaa"));

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值