首页 > 学院 > 开发设计 > 正文

静态代理 & 动态代理

2019-11-08 00:01:26
字体:
来源:转载
供稿:网友

最近在学习java代理模式,下面是学习心得

1,对于静态代理:

interface PRoxyInterFace { void sayHello(); } static class TargetObject implements ProxyInterFace { @Override public void sayHello() { System.out.println("hello world"); } } static class ProxyObject implements ProxyInterFace { private ProxyInterFace object; public ProxyObject(ProxyInterFace obj) { this.object = obj; } @Override public void sayHello() { object.sayHello(); } } public static void main(String[] args) { //代理的目标对象 ProxyInterFace proxyInterFace = new TargetObject(); //代理器 ProxyObject proxyObject = new ProxyObject(proxyInterFace); //调用目标对象的方法, 执行代码任务 proxyObject.sayHello(); }

2,对于动态代理:

interface ProxyInterFace { void sayHello(); } static class TargetObject implements ProxyInterFace { @Override public void sayHello() { System.out.println("hello world"); } } static class ProxyObject implements InvocationHandler { private Object object; public ProxyObject(Object obj) { this.object = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //do something return method.invoke(object, args); //do something } } public static void main(String[] args) { //代理的目标对象 ProxyInterFace proxyInterFace = new TargetObject(); //代理器 ProxyObject proxyObject = new ProxyObject(proxyInterFace); //转换成InvocationHandler InvocationHandler handler = proxyObject; //执行代码任务 Object proxy = Proxy.newProxyInstance(proxyInterFace.getClass().getClassLoader(), proxyInterFace.getClass().getInterfaces(), handler); //转换成目标对象,调用目标对象的方法 ((ProxyInterFace) proxy).sayHello(); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表