四年是的搜索
手机号好从是
就是 是是
四点多醋
数控车床是
速是代理模式
动态代理
动态代理可能为我们动态的生成代理类和代理对象;
目前java动态代理的实现有两种:
1.JDK的动态代理。
2.基于CGlib的动态代理。
JDK的动态代理:
proxy:用来创建代理类和对象;
InvocationHandler:调用处理器;
Method:方法;
JDK的动态代理的开发步骤:
1.创建目标对象和接口(真实对象和抽象对象);
2.创建一个InvocationHandler的实现类并实现invoke方法;
3.通过Proxy.newProxyInstance()方法来获得代理对象;
4.调用代理对象的方法;
JDK动态代理的理解:
MyInvocationHandler 接口{ invoke(){ } }
真实对象
UserService
代理对象
userService2=Proxy.newProxyInstance(ClassLoader,接口,MyInvocationHandler)
当我们调用userService2.save();
时,程序会调用MyInvocationHandler中的invoke方法;
即,当我们调用代理对象的方法时,会将请求发送给InvocationHandler的invoke方法;
相关实际类比
真实对象 userService servlet
过滤器 invocationHandler filter
方法 invoke doFilter
在调用servlet之前,filter会先进行请求拦截,而相对于代理而言,则是在调用userService之前,invocationHandler会进行请求拦截。invoke之于InvocationHandler,就相当于doFilter之于filter。
为什么要使用代理模式
当你需要使用的一个类不在本地主机而在其他地方时,使用代理可以减少你获取该类,并且使用的时间,使用代理可以方便快捷的获取到类,而不适用则需要进行copy相关操作,非常麻烦
为了类的单一性原则问题,通常我们在调用类时需要其他更多的操作,比如权限控制,这时我们需要尽量不在原类中编写,而在代理类中编写是一个很好地选择。
结合实际开始
看时刻时刻
酒红色时间长
快说出
看
借记卡会计
是师
亅是的
小黑黑
新建
没有特别说明