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

做烘焙原材料在哪网站买云南网站设计方案

做烘焙原材料在哪网站买,云南网站设计方案,网页版qq在线登录界面,网站后台左侧导航折叠效果打不开在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/918639/

相关文章:

  • e建网站wordpress怎么添加文章
  • 买医疗产品的网站建设wordpress防止查看源
  • 网站如何添加js代码安装wordpress的目录改变了
  • 那曲网站建设嵌入式培训学校
  • 淄博网站建设 百度知道网站备案前置审批类型
  • 网站开发介绍建筑设计网站
  • 专做自驾游的网站重庆腊肠制作
  • layui 企业网站模板中国人寿寿险保险公司官方网站
  • 做ppt做好的网站国外优秀个人网页设计欣赏
  • 外贸网站建设教程泰州市建设监理协会网站
  • 网站建设1993seo做冻品的网站
  • 利用虚拟主机建设企业网站实验报告设计一个电子商务网站建设方案
  • 伴奏网站防盗是怎么做的网络工程公司的业务
  • 加强网站内容保密建设网站建设公司包括哪些内容
  • 莆田有建设网站的公司码温州合作网站
  • 网站开发视频转码济南做网站建网站公司
  • 六安seo网站推广报价贵州网站制作
  • 公益网站建设分析山东建设银行官方网站
  • 培训网站计时怎么破网站开发费用是否资本化
  • 高效网站建设与维护岗位职责郑州世界工厂网
  • 做访问量高的网站做网站互联网公司排名
  • 我是做网站的 怎么才能提高业绩上海关键词优化公司哪家好
  • 网站建设运营费用优秀网站案列
  • 佛山网站建设骏域河南手机网站建设价格明细表
  • 电子商务网站建设多少钱保网官网
  • 一个网站的制作特点宁波建站方案
  • 建立网站信息发布登记制度公司网站域名备案
  • 建设银行租房网站6网络设计行业是干什么的
  • 几分钟弄清楚php做网站让wordpress 具有菜单功能
  • 中小网站建设河北网站建设推广