zoukankan      html  css  js  c++  java
  • 深入了解代理模式

    代理分为静态代理和动态代理,下面分别针对两种代理做一下介绍:

    一、静态代理(静态织入的方式)

    所谓静态代理是指,在程序运行前,由程序员创建或特定工具自动生成源代码并对其编译生成.class文件,通过代理类在不修改原有代码的前提下增加一些新功能,是开闭原则(Open for Extension, Closed for Modification)最典型的实践。

    二、动态代理

    动态代理则可以简单地为各个主题类分别生成代理类,共享“预处理,后处理”功能,这样可以大大减小程序规模,这也是动态代理的一大亮点。

    在动态代理中,代理类是在运行时期生成的。因此,相比静态代理,动态代理可以很方便地对委托类的相关方法进行统一增强处理,如添加方法调用次数、添加日志功能等等。

    动态代理主要分为JDK动态代理和cglib动态代理两大类。

          1、实现动态代理的关键技术是反射;

      2、代理对象是对目标对象的增强,以便对消息进行预处理和后处理;

      3、InvocationHandler中的invoke()方法是代理类完整逻辑的集中体现,包括要切入的增强逻辑和进行反射执行的真实业务逻辑;

      4、使用JDK动态代理机制为某一真实业务对象生成代理,只需要指定目标接口、目标接口的类加载器以及具体的InvocationHandler即可。

      5、JDK动态代理的典型应用包括但不仅限于AOP、RPC、Struts2、Spring等重要经典框架。

  • 相关阅读:
    Kafka 文档用例
    Kafka 文档引言
    关于工作流核心选择
    IEEE浮点标准
    新项目的CQRS设计
    持续集成:CruiseControl.NET + VisualSVN.Server
    商城(一)
    Maven基础学习(一)—Maven入门
    Mybatis基础学习(五)—缓存
    Mybatis基础学习(四)—关系映射
  • 原文地址:https://www.cnblogs.com/takemyjavalisfe/p/10537010.html
Copyright © 2011-2022 走看看