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

毕业设计团购网站建设广东省做网站推广公司

毕业设计团购网站建设,广东省做网站推广公司,wordpress图像并排,昆山建设招标信息网站🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 🔥 微信:zsqtcyw 联系我领取学习资料 …

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
🔥 微信:zsqtcyw 联系我领取学习资料

🤞这次都给他拿下🤞

    • 🎈前言
    • 🎈静态代理
    • 🎈动态代理
    • 🍚总结

🎈前言

在面向对象编程中,代理模式是一种常见的设计模式,用于控制对对象的访问。代理模式有两种主要类型:静态代理和动态代理。尽管它们都可以用来实现代理功能,但它们在实现方式、灵活性和使用场景上存在显著区别。本文将深入探讨静态代理和动态代理的主要区别,并介绍它们各自的优缺点和适用场景。

🎈静态代理

  • 定义:
    静态代理是指在编译时就确定了代理类和目标类的关系。代理类和目标类之间的关系是固定的,因此在编译时需要明确代理类的实现。

  • 实现方式:
    静态代理通常涉及创建一个代理类,这个代理类实现了与目标类相同的接口,并在其中委托实际的操作给目标类。代理类的代码和目标类的代码是分开的,代理类通常会在方法调用前后执行一些附加的操作(如日志记录、权限检查等)。

  • 示例代码:
    假设有一个 Subject 接口和一个 RealSubject 实现类,我们可以创建一个 StaticProxy 类来作为代理。

    // Subject接口
    public interface Subject {void request();
    }// RealSubject实现类
    public class RealSubject implements Subject {@Overridepublic void request() {System.out.println("RealSubject request");}
    }// StaticProxy代理类
    public class StaticProxy implements Subject {private RealSubject realSubject;public StaticProxy(RealSubject realSubject) {this.realSubject = realSubject;}@Overridepublic void request() {// 代理类的附加功能System.out.println("StaticProxy before request");realSubject.request();System.out.println("StaticProxy after request");}
    }
  • 优点:
    简单直观,易于理解和实现。
    代理类的行为可以在编译时确定。

  • 缺点:
    每增加一个目标类,就需要增加一个对应的代理类,代码重复度高。
    不够灵活,难以处理动态的代理需求。

🎈动态代理

  • 定义:
    动态代理是在运行时创建代理对象的一种机制。与静态代理不同,动态代理不需要在编译时就确定代理类的具体实现。动态代理通过反射机制在运行时创建代理对象,并将方法调用转发给目标对象。

  • 实现方式:
    在 Java 中,动态代理可以使用 java.lang.reflect.Proxy 类和 InvocationHandler 接口来实现。动态代理允许我们在运行时创建代理实例,并通过 InvocationHandler 的 invoke 方法来处理对目标对象方法的调用。

  • 示例代码:
    以下是使用 Java 动态代理创建代理对象的示例:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;// InvocationHandler实现类
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 {System.out.println("DynamicProxy before method");Object result = method.invoke(target, args);System.out.println("DynamicProxy after method");return result;}
}// 使用动态代理创建代理对象
public class DynamicProxyDemo {public static void main(String[] args) {RealSubject realSubject = new RealSubject();Subject proxyInstance = (Subject) Proxy.newProxyInstance(realSubject.getClass().getClassLoader(),realSubject.getClass().getInterfaces(),new DynamicProxyHandler(realSubject));proxyInstance.request();}
}
  • 优点:
    灵活性高,可以在运行时创建代理对象。
    不需要为每个目标类创建一个代理类,减少了代码的重复。
    可以动态地处理不同的目标对象和方法调用。
  • 缺点:
    相对复杂,理解和调试较难。
    可能会影响性能,因为代理对象是在运行时动态生成的。

🍚总结

  • 静态代理:

    实现时机:编译时
    代码重复性:较高,每个目标类需要一个对应的代理类
    灵活性:较低,代理类的行为在编译时确定
    适用场景:当代理类的逻辑简单,且目标类数量较少时

  • 动态代理:
    实现时机:运行时
    代码重复性:较低,通过一个通用的代理实现处理多个目标类
    灵活性:较高,可以动态处理不同的目标对象和方法调用
    适用场景:当需要处理动态的代理需求,或目标类数量较多时
    静态代理和动态代理各有优缺点,选择使用哪种代理方式应根据具体的需求和应用场景来决定。在实际开发中,动态代理的灵活性和减少代码重复的优点通常使其成为更受欢迎的选择,但在某些简单的应用场景中,静态代理可能更易于实现和维护。

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。
作者:码海浮生

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

相关文章:

  • 门户网站流量梵克雅宝五花手链
  • wordpress多站点site id为什么不能安装wordpress
  • 加强网站信息内容建设管理wordpress 相册 免费模板
  • 做门窗安装用哪些网站找生意昆明市城乡建设局网站
  • 网站开发技术创业计划高端网站建设公司增长
  • 博山网站建设yx718旅游网站建设备案
  • 代做广联达 的网站庆元县住房和城乡建设局网站
  • 昆明如何做百度的网站产品营销策划方案
  • 做瞹视频网站二手车网站html模板
  • .net做中英文网站公司简介ppt内容
  • 厦门建网站多少钱汤唯梁朝伟做视频网站
  • 网站开发人员的考核做译员的网站
  • 购物网站难做网站建设思路
  • 做内贸的什么网站效果好做微商选择的哪个平台微平台网站
  • 网站开发工具特点总结网站整体设计风格
  • 唐山彩钢中企动力提供网站建设做特效的网站
  • 个人免费推广网站网站的标签怎么修改
  • 温州专业全网推广建站公司企业网站app制作价格
  • 天津网站设计公司价格电商平台代运营服务
  • 网站建设主机配置电器网站模板
  • 做模板网站的公司排名优化公司哪里有
  • 做yy头像的网站做网站运营跟专业有关吗
  • 个人做跨境电商网站世界总人口实时数据
  • 百度云自助建站太原智能化营销网站制作公司
  • 做网上夫妻去哪个网站网站服务器修改登录密码
  • 太平洋网站开发旅游网站系统建设方案
  • 潍坊网站制作保定公司vue做视频网站
  • 网站建设公司沈阳怎么样做电影网站
  • 镇江教育云网站建设如何做自己的业务网站
  • 在微信怎样搞做微视频网站h5设计平台