//定义一个接口规范------------------------
public interface Iphone {
/**
* 实现一个打电话的接口
*/
public void telephone();
}
//定义一个借口的实现类--------------------------
public class MyPhone implements Iphone{
@Override
public void telephone() {
System.out.println("我正在使用一个手机");
}
}
//使用JDK实现一个动态代理---------------------
public class Trends implements InvocationHandler {
//定义一个将要实现的对象
private Object oob;
public Trends(Object oob) {
this.oob = oob;
}
public Object getProxy(){
/**
* 参数1:类加载器
* 参数2:目标类实现的接口(数组)
* 参数3:InvocationHandler 接口实现类
*/
return Proxy.newProxyInstance(this.getClass().getClassLoader(),oob.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result=null;
result=method.invoke(oob,args);//执行目标对象方法
return result;
}
}
//定义一个测试类---------------------
public class Test {
public static void main(String[] args) {
//一个要实现的类
MyPhone myPhone=new MyPhone();
//实例化动态代理并且传入要代理的类
Trends trends=new Trends(myPhone);
//获取返回类
Iphone iphone= (Iphone) trends.getProxy();
iphone.telephone();
}
}
09-21
09-21
09-21