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

港北网站建设宜昌有做网站的公司吗

港北网站建设,宜昌有做网站的公司吗,平台建设内容,全自动站群系统在Java中,代理模式(Proxy Pattern)可以通过静态代理和动态代理两种主要方式实现。 一、静态代理模式 在编译时就已经确定了代理类和被代理类的关系。 代理类和目标对象通常实现相同的接口或继承相同父类。 缺点是对于每个需要代理的目标对象…

在Java中,代理模式(Proxy Pattern)可以通过静态代理和动态代理两种主要方式实现。

一、静态代理模式

在编译时就已经确定了代理类和被代理类的关系。
代理类和目标对象通常实现相同的接口或继承相同父类。
缺点是对于每个需要代理的目标对象都需要创建一个代理类,这会导致代码膨胀。

interface Service {void performAction();
}class RealService implements Service {@Overridepublic void performAction() {System.out.println("Performing action in RealService.");}
}class StaticProxy implements Service {private final Service realService;public StaticProxy(Service realService) {this.realService = realService;}@Overridepublic void performAction() {// 可以添加前置处理逻辑System.out.println("Before performing action.");realService.performAction();// 可以添加后置处理逻辑System.out.println("After performing action.");}
}


二、动态代理模式

动态代理允许我们在运行时创建代理对象,而不需要为每一个委托类都编写一个具体的代理类。这提供了更高的灵活性和可扩展性。Java中的动态代理主要分为两种:基于接口的代理和基于子类的代理。

1. JDK动态代理

使用java.lang.reflect.Proxy类结合InvocationHandler接口,在运行时动态生成代理对象。
只适用于实现了接口的类。
这种方式允许在不修改原代码的情况下为多个接口方法添加通用的行为。

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class DynamicProxyExample {public static void main(String[] args) {Service realService = new RealService();Service proxyInstance = (Service) Proxy.newProxyInstance(realService.getClass().getClassLoader(),realService.getClass().getInterfaces(),new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("Before " + method.getName());Object result = method.invoke(realService, args);System.out.println("After " + method.getName());return result;}});proxyInstance.performAction();}
}


2. CGLIB 动态代理

当目标对象没有实现任何接口时,可以使用CGLIB库通过继承的方式生成代理类。
CGLIB会在运行时生成目标类的一个子类,并重写其中的方法以插入自定义逻辑。
注意:由于CGLIB是通过继承实现的,因此不能用于代理final类或方法。
使用CGLIB需要引入相应的依赖(如Maven依赖)。

<dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version>
</dependency>
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class CglibProxyExample {public static void main(String[] args) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(RealService.class);enhancer.setCallback(new MethodInterceptor() {@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println("Before " + method.getName());Object result = proxy.invokeSuper(obj, args);System.out.println("After " + method.getName());return result;}});Service service = (Service) enhancer.create();service.performAction();}

http://www.yayakq.cn/news/399642/

相关文章:

  • 网站需要域名吗手机网站建设流程 知乎
  • 企业网站设计要求建立网站ppt
  • 网站建站设计品牌建设表态发言
  • 音乐网站建设流程网站背投广告代码
  • 做什么类型网站可以吸引用户用户体验设计师是干嘛
  • 深圳网站建设高端承接设计网站建设
  • 网站开发中所需要的绘图工具做网站怎么推广收益大
  • 提供手机网站制作烟台建设信息网站
  • 新乡市建设路小学网站表白网站制作软件
  • 成都网站建设制作公司wordpress通知搜索引擎收录
  • 福建省建设法制协会网站seo排名外包
  • 公司网站备案去哪里备案做网站不需要原件吧
  • 安徽省建设厅执业资格注册中心网站dw网站轮播效果怎么做
  • 韩国优秀网站设计wordpress100万数据
  • 合肥网站建合肥网站建设找蓝领商务python做网站步骤
  • 企业网站分析与优化网站建设的公司选择哪家好
  • 深圳网站建设前十名甜橙直播
  • 用境外服务器做网站水果网站源码
  • 网站iis安全配置wordpress 生成目录
  • 做网站的学校凡科网是什么
  • asp.net网站加速做休闲会所网站制作
  • 郑州专业网站建设搭建公司如何申请自己的网站
  • 自助建站平台设计器红河北京网站建设
  • 如何建立网站教程城市建设游戏模拟网站
  • 网站如何做美工做网站用python好还是PHP好
  • 柳州城乡建设管理局网站蚌埠网站建设网站
  • 做淘宝客网站需要做后台吗网站做推广需要到工信部备案吗
  • 免费试用网站源码葡京网站做中间商
  • 学做网站视频做网站找什么公司工作
  • 网站开发的开发工具视频网站的服务器多大