zoukankan      html  css  js  c++  java
  • jdk动态代理

    使用代理模式的作用

    1.功能增强:在你原有的功能上,增加了额外的功能。新增加的功能,叫做功能争强。
    2.控制访问:代理类不让你访问目标,例如商家不让用户访问厂家。
    4.实现代理的方式
    1.静态代理:代理类是自己手工实现,自己创建一个java类,表示代理类。同时你所要的目标类是确定的。
    特点:1)实现简单
    2)容易理解
    缺点 1)当目标类增加了,代理类可能也需要成倍的增加,代理类数量过多。
    模拟一个用户购买u盘的行为。
    2)当你的接口中功能增加了,或者修改了,会影响众多的实现类,代理都需要修改。影响比较多。

      用户是客户端类
        商家:代理,代理某个产品的u盘
        厂家:目标类
      三者的关系:用户(客户端)商家(代理)厂家(目标)
    

    实现的步骤:
    1.创建一个接口,定义卖u盘的方法,表示你的厂家和商家做的事情。
    2.创建厂家类,实现1步骤的接口
    3.创建商家,就是代理类,也需要实现1步骤中的接口。
    4.创建客户端类,调用商家的方法买一个u盘

    代理类完成的功能:
    1.目标类中方法的调用
    2.功能的增强
    2.动态代理:
    当静态代理中目标类很多时候,可以使用动态代理,避免静态代理的缺点。
    动态代理中目标类即使很多,1)代理类数量可以很少,2)当你修改了接口中方法时,不会影响代理类。
    动态代理:在程序执行过程中,使用jdk的反射机制,创建代理类对象,并动态的指定要代理目标类。
    换句话说:动态代理是一种创建java对象的能力,让你不用创建TaoBao类,就能创建代理类对象
    在java种,要想创建对象:
    1.创建类文件,java文件编译为class
    2.使用构造方法,创建类的对象。

    动态代理的实现:1.jdk动态地理:使用java反射包中的类和接口实现接口动态代理的功能。反射包 java.lang.reflect, 里面有三个类InvocationHanler,Method,Proxy
    2.cglib动态代理(了解)
    cglib是第三方的工具库,创建代理对象
    cglib的原理是继承,cglib通过继承目标类,创建它的子类,在子 类中重写父类中同名的方法,实现功能的修改。
    因为cglib

  • 相关阅读:
    .NET Core 首例 Office 开源跨平台组件(NPOI Core)
    ASP.NET Core 导入导出Excel xlsx 文件
    python练习七—P2P下载
    VisualVM远程连接Tomcat
    一次Linux自动化部署尝试
    python练习六—简单的论坛
    shiro实现APP、web统一登录认证和权限管理
    python练习五—简单web应用
    python练习四—简单的聊天软件
    python练习三—解析xml
  • 原文地址:https://www.cnblogs.com/lyhLive/p/14812586.html
Copyright © 2011-2022 走看看