动态代理-JDK

网友投稿 536 2022-11-01

动态代理-JDK

动态代理-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小时内删除侵权内容。

上一篇:springboot整合JPA访问Mysql的实现方法
下一篇:一个移动端跨平台的gpu+cpu并行计算的cnn框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~