标签:sleep pac 记录 lan public override hand bsp 结果
礼悟:
好好学习多思考,尊师重道存感恩。叶见寻根三返一,活水清源藏于零。
虚怀若谷良心主,皓月当空自在王。愿给最苦行无悔,诚劝且行且珍惜。
os :windows7 x64
jdk:jdk-8u131-windows-x64
ide:Eclipse Oxygen Release (4.7.0)
接口类:
package blog.jizuiku6;
/**
*
*
* @author jizuiku
* @version V17.10.03
*/
public interface UserDao {
void play();
void sleep();
}
接口实现类:
package blog.jizuiku6;
/**
*
*
* @author jizuiku
* @version V17.10.03
*/
public class UserDaoImpl implements UserDao {
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("play");
}
@Override
public void sleep() {
// TODO Auto-generated method stub
System.out.println("sleep");
}
}
关键的类出现:
package blog.jizuiku6;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
*
*
* @author jizuiku
* @version V17.10.03
*/
public class MyInvocationHandler implements InvocationHandler {
private Object target = null;
// 取消 无参构造
private MyInvocationHandler() {
// TODO Auto-generated constructor stub
}
public MyInvocationHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
// 准备部分
System.out.println("正在读档");
// 这行代码相当于
// result = target.method(agrs);
Object result = method.invoke(target, args);
// 收尾部分
System.out.println("正在存档");
return result;
}
}
测试类:
package blog.jizuiku6;
import java.lang.reflect.Proxy;
/**
*
*
* @author jizuiku
* @version V17.10.03
*/
public class Demo {
public static void main(String[] args) {
UserDao ud = new UserDaoImpl();
MyInvocationHandler handler = new MyInvocationHandler(ud);
ClassLoader loader = ud.getClass().getClassLoader();
Class[] interfaces = ud.getClass().getInterfaces();
// 对接口中的方法
UserDao proxy = (UserDao) Proxy.newProxyInstance(loader, interfaces, handler);
// 执行所有的方法时,执行前会有附加操作,执行后也会有附加操作
// 有的时候 用到代理是: 执行前进行权限校验,执行后进行日志记录
// 而这个程序,只是进行简单的演示。不具备实用价值
// 如果要用在工作中的话,有成熟的框架可以使用。但万变不离其宗,万剑也要归宗!Java
proxy.play();
proxy.sleep();
proxy.hashCode();
}
}
结果:
Java优秀,值得学习。
学习资源:itcast和itheima视频库。如果您有公开的资源,可以分享给我的话,用您的资源学习也可以。
博文是观看视频后,融入思考写成的。博文好,是老师讲得好。博文坏,是 给最苦 没认真。
JavaSE8基础 Proxy 对接口进行动态代理 简单示例
标签:sleep pac 记录 lan public override hand bsp 结果
原文地址:http://www.cnblogs.com/jizuiku/p/7637637.html