东莞产品网站建设,销售机械设备做网站,dw自己做网站需要什么意思,wordpress 取消置顶1. 概念
1.代理模式是什么#xff1f;
其实就是选一个中间人#xff0c;可以理解为中介#xff0c;如果要买房子#xff0c;先和中介去商量#xff0c;中介和房主去商量#xff0c;这样。
2.为什么需要代理模式#xff1f;
其实还是为了安全吧#xff0c;代理模式中…1. 概念
1.代理模式是什么
其实就是选一个中间人可以理解为中介如果要买房子先和中介去商量中介和房主去商量这样。
2.为什么需要代理模式
其实还是为了安全吧代理模式中间可以添加校验信息等增加安全性避免直接对类的访问
2.静态代理
1.介绍
静态代理其实就是替身或者克隆人。
被代理类代理类 将被代理类作为属性调用时相同方法中间调用被代理类的方法接口类定义方法被代理类与代理类都需要实现接口
2.代码
1.接口类Person
/**
* Description: 代理对象和被代理对象的公共接口
*/
public interface Person {/*** 都具备发送消息的功能** param msg*/void sendMsg(String msg);
}2.被代理类Student
/*** Description: 被代理对象 具体的学生*/
public class Student implements Person {Overridepublic void sendMsg(String msg) {System.out.println(I say msg);}
}3. 代理类StudentProxy
/*** Description: 代理对象*/
public class StudentProxy implements Person {/*** 代理类提前在代码中确定被代理对象是学生*/private Student student;public StudentProxy(Student stu) {this.student stu;}Overridepublic void sendMsg(String msg) {// 代理对象增加额外工作System.out.println(static proxy do something...);// 通过代理对象调用被代理对象的方法student.sendMsg(msg);}
}4.总结
StudentProxy与Student都实现Person而Proxy是实现方法同时加入自己逻辑。
3.动态代理
1.JAVA动态代理
动态代理还是反射实现
1.代理类实现InvocationHandler
因为他需要调用invoke方法
public class StudentProxyInvokeHandler implements InvocationHandler {private Student student;public StudentProxyInvokeHandler(Student student) {this.student student;}Overridepublic Object invoke(Object o, Method method, Object[] objects) throws Throwable {System.out.println(代理成功直接逃课);return method.invoke(student,objects);// 代理类调用方法调用时被代理类的方法}2.实现类
使用Proxy的newProxyInstance方法来创建一个接口通过接口去调用最终结果这个getProxyInstance返回的其实就是Person
public class ProxyFactory {public static Object getProxyInstance(Student student){StudentProxyInvokeHandler studentProxyInvokeHandler new StudentProxyInvokeHandler(student);return Proxy.newProxyInstance(student.getClass().getClassLoader(), student.getClass().getInterfaces(),studentProxyInvokeHandler);}
}