您的位置:首页 > 编程语言 > Java开发

Java设计模式之代理模式2-动态代理(jdk实现)

2018-03-19 15:08 836 查看

这篇是接着上一篇继续介绍java设计模式之代理模式。下面讲解的是jdk实现动态代理。

1.)首先我们要声明一个动态代理类,实现InvocationHandler接口

package com.zhong.pattern.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* 演员动态代理类
* @author admin
*
*/
public class DynamicActorProxy implements InvocationHandler{

private Object target;// 被代理的对象

public DynamicActorProxy(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = method.invoke(this.target, args);
return result;

}

}

2.)具体实现

package com.zhong.pattern.proxy;

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

public class Test {

public static void main(String[] args) {
// 我们要代理的真实对象
Actor actor = new Actor("刘德华");// 歌星--被代理对象
// 2.jdk动态代理
// 我们要代理哪个真实对象,就将该对象传进去,最后是通过该真实对象来调用其方法的
InvocationHandler handler = new DynamicActorProxy(actor);
Play play = (Play) Proxy.newProxyInstance(handler.getClass().getClassLoader(), actor.getClass().getInterfaces(),
handler);
play.sing("笨小孩");
}

}

3.)动态代理好处

使用JDk动态代理机制的好处:1、减少编程的工作量:假如需要实现多种代理处理逻辑,只要写多个代理处理器就可以了,无需每种方式都写一个代理类。2、系统扩展性和维护性增强,程序修改起来也方便多了(一般只要改代理处理器类就行了)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: