当前位置: 首页 > news >正文

做玉的网站网络推广公司有多少家

做玉的网站,网络推广公司有多少家,桂林做网站的公司有哪些,昭平县建设局网站Java代理模式详解 概念 代理模式是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。在Java中,代理…

Java代理模式详解

概念

代理模式是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。在Java中,代理模式主要分为静态代理和动态代理。

静态代理

静态代理是在编译时就已经确定好代理类要代理谁。在静态代理中,我们创建一个代理类来实现与目标对象相同的接口,并在代理类中维护一个目标对象的引用。当客户端调用代理类的方法时,实际上是通过代理类间接地调用目标对象的方法。

示例

假设我们有一个接口Subject和一个实现类RealSubject

public interface Subject {void request();
}public class RealSubject implements Subject {@Overridepublic void request() {System.out.println("RealSubject: Handling request.");}
}

接下来,我们创建一个代理类ProxySubject,它实现了Subject接口并持有一个RealSubject的实例:

public class ProxySubject implements Subject {private RealSubject realSubject;public ProxySubject() {this.realSubject = new RealSubject();}@Overridepublic void request() {preRequest();realSubject.request();postRequest();}private void preRequest() {System.out.println("ProxySubject: Preparing request.");}private void postRequest() {System.out.println("ProxySubject: Request completed.");}
}

ProxySubject中,我们在调用realSubject.request()之前和之后分别执行了一些额外的操作。这就是静态代理的一个典型用法:在目标方法执行前后插入额外的逻辑。

动态代理

动态代理与静态代理的主要区别在于,动态代理是在运行时动态地生成代理类。在Java中,我们可以通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现动态代理。

示例

首先,我们定义一个InvocationHandler的实现:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class DynamicProxyHandler implements InvocationHandler {private Object target;public DynamicProxyHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {preRequest();Object result = method.invoke(target, args);postRequest();return result;}private void preRequest() {System.out.println("DynamicProxyHandler: Preparing request.");}private void postRequest() {System.out.println("DynamicProxyHandler: Request completed.");}public static Object newInstance(Object target) {return Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),new DynamicProxyHandler(target));}
}

然后,我们可以这样使用动态代理:

Subject realSubject = new RealSubject();
Subject proxySubject = (Subject) DynamicProxyHandler.newInstance(realSubject);
proxySubject.request();

这段代码首先创建了一个RealSubject实例,然后通过DynamicProxyHandler.newInstance()方法创建了一个代理对象。当我们调用proxySubject.request()时,实际上会调用DynamicProxyHandler中的invoke()方法,从而实现在目标方法执行前后插入额外的逻辑。

总结

代理模式在Java中主要有两种实现方式:静态代理和动态代理。静态代理在编译时就已经确定好代理类要代理谁,而动态代理则可以在运行时动态地生成代理类。这两种方式都可以实现在目标方法执行前后插入额外的逻辑,但动态代理更加灵活和强大。

http://www.ritt.cn/news/9796.html

相关文章:

  • 自己怎么做网站视频赚钱百度网盘网页版登录入口官网
  • 滴滴优惠券网站怎么做的百度网址大全免费下载
  • 毕业设计网站建设软件项目怎么优化自己网站的关键词
  • 网站需要第三方登录怎么做网站运营工作内容
  • 物流网站的建设青岛seo服务哪家好
  • 如何将别人的网站作为自己的精准引流推广公司
  • 官网建站哪个程序最好关键词分类哪八种
  • 广州西樵网站制作seo精华网站
  • wordpress 自定义查询关键词优化排名软件案例
  • 凤阳做网站百度销售平台
  • 酒店网站建设方案书有做网站的吗
  • 江苏分销网站建设哪里有正规的电商培训班
  • 伪静态规则变动对网站的影响教你如何快速建站
  • 网站建设面包屑导航条营销宣传方式有哪些
  • php网站做语言包首页排名seo
  • 深圳网站设计公司专业吗提高搜索引擎检索效果的方法
  • 小精灵网站在线做语文商品关键词优化的方法
  • 网站开发研究生网络推广要求
  • 做app布局参考哪个网站外贸网站优化推广
  • 上海网络推广软件沈阳seo搜索引擎
  • 做网站需要什么域名企业产品营销策划推广
  • 易企秀网站开发网页制作工具
  • 惠来做网站诈骗如何免费推广网站
  • 在百度上做公司网站得多少钱赵阳竞价培训
  • 中小型企业网站建设做网站seo优化
  • 网站设计要素海淀seo搜索优化多少钱
  • 北京已经开始二次感染了成都seo优化推广
  • 大网站开发费用中国站免费推广入口
  • 美国做电商网站有哪些内容google play官网
  • 郑州互联网seo河北seo推广方案