JS 与 trick 代码的运用及解析全攻略
578
2022-11-01
动态代理-JDK
代理模式:假设一个场景,你的公司是一位软件公司,你是一位软件工程师,显然客户带着需求不会去找你谈,而是去找商务谈,此时商务就代表公司。 商务的作用:商务可以谈判;也有可能在开发软件之前就谈失败,此时商务就会根据公司规则去结束和客户的关系,这些都不用软件工程师来处理。 代理对象的作用:在真实对象访问之前或者之后加入对应的逻辑,或者根据其他控制是否使用真实对象,这个例子就是商务控制了客户对软件工程师的访问。客户就是程序中的调用者,商务就是代理对象,软件工程师就是真是对象1.定义接口
public interface HelloWorld { public void sayHelloWorld();}
2.创建实现类实现接口
package cn.batis.impl;import cn.batis.interfaces.HelloWorld;public class HelloWorldImpl implements HelloWorld { public void sayHelloWorld() { System.out.println("hello world!"); }}
3.建立代理对象和真实对象之间的关系(bind方法)4.实现代理逻辑方法(invoke方法)
package cn.batis.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class JDKProxyExample implements InvocationHandler { //真实对象 private Object target=null; /** * 建立代理对象和真实对象的代理关系,并返回代理对象 * @param target 真实对象 * @return 代理对象 */ public Object bind(Object target){ this.target=target; return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("进入代理逻辑方法"); System.out.println("在调度真实对象之前的服务"); Object obj = method.invoke(target, args); System.out.println("在调度真实对象之后的服务"); return obj; }}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~