Java动态代理
在我们日常开发中,代理模式是一个非常常见的模式。动态代理时jdk中自带的,可以非常方便的在原有的功能上添加一些我们自己的功能。
什么是代理
就是为其他对象提供一个代理以控制被代理对象的访问。
动态代理
利用Java的反射机制,在运行时创建代理类。
public interface DoSomethingService {
String sayHello(String name);
}
public class DoSomethingImpl implements DoSomethingService{
@Override
public String sayHello(String name){
return "Hello, " + name;
}
}
public class ProxyHandler implements InvocationHandler {
private Object object;
public ProxyHandler(Object object) {
this.object = object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Before invoke:" + method.getName());
Object invoke = method.invoke(this.object, args);
System.out.println("After invoke: " + method.getName());
System.out.println("Answer: " + invoke);
return invoke;
}
}
@Test
public void testProxy(){
DoSomethingService doSomething = new DoSomethingImpl();
ProxyHandler proxyHandler = new ProxyHandler(doSomething);
DoSomethingService proxyClass = (DoSomethingService)Proxy.newProxyInstance(doSomething.getClass().getClassLoader(), doSomething.getClass().getInterfaces(), proxyHandler);
String ans = proxyClass.sayHello("Hardy");
System.out.println(ans);
}
欢迎大家阅读,有问题和不足的地方欢迎大家指出。作者:永和九年,转载请注明原文链接:https://www.cnblogs.com/hardyzhou/p/16618069.html

浙公网安备 33010602011771号