当前位置: 首页 > 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.yayakq.cn/news/443771/

相关文章:

  • 自己怎么做商城网站江苏伟业建设集团网站
  • 福州网站关键词蓝色经典网站
  • 印度网站后缀北京建设银行官方网站
  • 山东企业网站建设哪家好系统的网站建设教程
  • 常州网站制作公司排名电商培训机构推荐
  • 上海松江 网站建设公司网页传奇游戏排行榜前十
  • 做网站开发注册工商户可以么园林网站免费模板
  • 建设银行国际互联网网站无锡做网站首选众诺
  • sae 网站备案wordpress插件是什么
  • 公司网站开发款记什么科目wordpress分享功能
  • 网站建设外文参考文献微信官网下载2020最新版
  • 建网站要多长时间电商网站开发的难点在哪里
  • uemo网站源码有没有一些网站可以做问卷
  • 做景观素材有哪几个网站网站建设详情报价
  • 济南网站设计价格增加网站关键词
  • 完整的网站后台权限编码开服表网站开发
  • 佛山网站建设服务公司网站开发ckplayer加载失败
  • 重庆那里做网站外包好wordpress文艺主题
  • 网站跟系统的区别是南阳谁会做网站
  • 设计工作网站好网吧设计方案
  • 建站之星怎么收费网站阶段推广计划
  • 济南网站制作费用文化体育局网站建设
  • 建设银行网站证书一级做ae视频直播可以吗多少钱
  • 合肥网站建设多少钱做任务佣金的网站
  • wordpress微官网长春网站建设推广优化
  • 微网站 百度地图seo全网营销公司
  • 无锡做网站企业linux 如何做网站
  • 网站建设和维护工作总结想做网站找什么公司
  • 遵义市做网站的地方wordpress mu 博客群
  • 网站前台功能模块介绍wordpress变慢了