动态代理
2020-06-01 本文已影响0人
GIT提交不上
一、代理模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

二、动态代理
接口类如下:
public interface IHelloService {
void dealHelloService();
}
接口实现类如下:
public class HelloServiceImpl implements IHelloService{
@Override
public void dealHelloService() {
System.out.println("hello world!");
}
}
动态代理类如下:
public class ProxyHandler implements InvocationHandler {
private Object target;
public ProxyHandler(Object target) {
super();
this.target = target;
}
public Object getProxy(){
return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),target.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(target,args);
}
}
测试类如下:
public class Test {
public static void main(String[] args) {
IHelloService iHelloService = new HelloServiceImpl();
ProxyHandler handler = new ProxyHandler(iHelloService);
IHelloService service = (IHelloService)handler.getProxy();
service.dealHelloService();
}
}
