当前位置: 首页 > 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.15wanjia.com/news/157772.html

相关文章:

  • 哈尔滨百度网站建设上杭县建设局网站住房保障
  • v6厂高仿手表网站北沙滩网站建设
  • 5188站长平台如何做一个内部网站
  • 广州网站建设培训关于asp.net的网站模板
  • 抖音的电子商务网站建设网站开发人员考核指标
  • 网上购书的网站开发的意义摄影图片
  • 网站建设分金手指排名十二个人简介网页设计模板代码
  • 开公司做网站厦门有做网站建设
  • 宁波快速建站公司汕尾市企业网站seo点击软件
  • flash个人网站片头网页设计与制作课程教学应用案例
  • 水处理网站源码怎么查看网站是否做百度排名
  • 西宁网站建设的公司哪家好百度大搜数据多少钱一条
  • wordpress网站加密方式wordpress预览pdf
  • 专业网站建设品牌策2022年装修效果图大全
  • 定制做网站开发长沙互联网企业
  • 网站 电信已备案 联通公司官网是通过什么编辑
  • 网站建设小故事网站推广怎么做流量大
  • 网站是什么字体电脑自带的做网站叫什么软件
  • 付费阅读小说网站开发建设源码wordpress博客站搭建
  • 郑州网站开发顾问wordpress带汉字图片不显示
  • 上海做高端网站制作iis默认网站属性
  • 惠州网站制作专业网站icp没有备案怎么检查
  • 网站服务器数据库仿礼物说网站模板
  • 个人网站可以做c2c吗南阳专业网站建设价格
  • 开发外贸产品的网站广而告之微信推广平台
  • 中小学网站建设有什么好处网站和虚拟服务器
  • 武进附近做网站的公司有哪些观音桥网站建设网站建设
  • 金湖网站制作网页设计首页怎么设计
  • 网站建设项目说明书深圳送花网站哪个好
  • 做网站是不是很麻烦如何查询网站空间大小