图片 1

Java中的代理模式(Proxy Pattern)

Posted by

代理模式的作用是控制和管理对象的访问权限;它的优点是:想要找代理的对象,可以不用每次都自己实现某个功能,可以把某个方法的调用权限,交给代理类来完成。一般分为
静态代理动态代理
。要实现代理模式,代理类和目标类需要实现同样的接口。
这个以上传业务举例:

1、动态代理的接口

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243
这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

package cn.proxy;

图片 1

public interface ProxyInterface {

静态代理

public void doSomething();

//我们定一个接口

}

interface IUpload {

2、实现类

void onUpload();

package cn.proxy;

}

public class ProxyImpl implements ProxyInterface {

//定义目标类,实现前面接口

@Override

public static class CommonUploader implements IUpload {

public void doSomething() {

@Override

// TODO Auto-generated method stub

public void onUpload() {

System.out.println(“实现类”);

System.out.println;

}

}

}

}

3、要实现代理的类

//定义代理类,实现同意的接口

package cn.proxy;

public static class ProxyUploader implements IUpload {

import java.lang.reflect.InvocationHandler;

//代理类持有目标对象类的引用

import java.lang.reflect.Method;

CommonUploader commonUploader;

public class ProxyHandler implements InvocationHandler{

private ProxyUploader(CommonUploader commonUploader) {

private Object object;
 //传入一个Object类型的对象,给该类中的invoke方法调用

this.commonUploader = commonUploader;

public ProxyHandler() {

}

// TODO Auto-generated constructor stub

//扩展实现

}

@Override

public ProxyHandler(Object object) {

public void onUpload() {

this.object = object;

commonUploader.onUpload();

}

}

/**

}

*    proxy:被代理的实现类

//****运行****

*    method:被代理的接口

public static void main(String a[]) {

*    args:参数,代理后的类

CommonUploader commonUploader = new CommonUploader();

*/

//静态代理

@Override

ProxyUploader proxyUploader = new ProxyUploader(commonUploader);

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {

proxyUploader.onUpload();

System.out.println(“执行动态代理前!”);

}

Object result = method.invoke(object, args);

复制代码

System.out.println(“执行动态代理后!”);

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注