zoukankan      html  css  js  c++  java
  • 设计模式-proxy

    什么是代理

    增强一个对象的功能

    买火车票,app就是一个代理,他代理了火车站,小区当中的代售窗口

    java当中如何实现代理

    java实现的代理的两种办法

    代理的名词

    代理对象 增强后的对象

    目标对象 被增强的对象

    他们不是绝对的,会根据情况发生变化

    静态代理

    继承

    代理对象继承目标对象,重写需要增强的方法;

    缺点:会代理类过多,非常复杂

    聚合

    目标对象和代理对象实现同一个接口,代理对象当中要包含目标对象。

    缺点:也会产生类爆炸,只不过比继承少一点点

    总结:如果在不确定的情况下,尽量不要去使用静态代理。因为一旦你写代码,就会产生类,一旦产生类就爆炸。

    动态代理

    自己模拟的动态代理

    不需要手动创建类文件(因为一旦手动创建类文件,就会产生类爆炸),通过接口反射生成一个类文件,然后调用第三方的编译技术,动态编译这个产生的类文件成class文件,继而利用UrlclassLoader(因为这个动态产生的class不在工程当中所以需要使用UrlclassLoader)把这个动态编译的类加载到jvm当中,最后通过反射把这个类实例化。

    缺点:首先要生成文件

    缺点:动态编译文件 class

    缺点:需要一个URLclassloader

    软件性能的最终体现在IO操作

    JDK动态代理

    自动检测

    通过接口反射得到字节码,然后把字节码转成class native openJDK c++

    cglib

  • 相关阅读:
    Servlet
    反射
    Python之装饰器
    app——升级测试点
    Python之基本运算符
    HTTP常见的几种认证机制
    Shell文件包含
    Shell输入/输出重定向
    Shell函数
    Shell循环语句
  • 原文地址:https://www.cnblogs.com/faramita/p/14445632.html
Copyright © 2011-2022 走看看