微信订阅号做微网站,制作淘宝网页设计的代码,淘宝网站推广方案,建设网站需要体现的流程有哪些一、代理模式
1、代理模式定义#xff1a; 代理模式#xff1a;由于某些原因要给某对象提供一个代理以控制对该对象的访问#xff0c;这时访问对象不适合或者不能够直接引用目标对象#xff0c;代理对象作为访问对象与目标对象之间的中介进行连接调控调用。 2、代理模式的…一、代理模式
1、代理模式定义 代理模式由于某些原因要给某对象提供一个代理以控制对该对象的访问这时访问对象不适合或者不能够直接引用目标对象代理对象作为访问对象与目标对象之间的中介进行连接调控调用。 2、代理模式的三种角色 2.1 抽象主题 2.2 真实主题类 2.3 代理Proxy类
3、代理模式的分类 3.1、静态代理模式 代理对象和目标实现同一个接口 优点可以在不修改目标对象的前提下扩展目标对象的功能 缺点1、冗余 由于代理对象和目标对象实现了同一个接口会产生很多的代理类 2、不易维护 一旦接口增加方法目标对象和代理对象都需要进行修改 3.2、动态代理模式 3.2.1、用jdk的api 动态代理是动态的在内存中构建代理对象从而实现对目标对象的代理能力 所以动态代理成为jdk代理或者叫接口代理 3.2.2 cglib动态代理 添加了jar包 第三方代码的生成类库运行时内存中动态生成一个子对象从而实现对目标对象功能的扩展. 3.3、静态代理和动态代理的区别 动态代理对象不用实现接口但是要求目标对象必须实现接口否则不能使用动态代理 1.静态代理在编译时就已经实现了编译完成后代理类是一个class文件 2.动态代理在运行时候动态生成编译完成后没有class文件,从而实现动态的生成字节码并加载到JVM中 3.4、cglib与动态代理最大的区别就是 1.使用动态代理的对象必须实现一个或者多个接口 2.使用cglib代理的兑现则无需实现接口达到代理类无入侵 3.使用cglib需要引入cglib的jar包如果已经有了spring-core的jar包则无需引入因为Spring中包含了cglib 4.总结 1.静态代理实现较简单只要代理对象对目标对象进行包装即可实现增强功能但静态代理只能为一个目标对象服务如果目标对象过多则会产生很多代理类。 2.JDK动态代理需要目标对象实现业务接口代理类只需实现InvocationHandler接口。3.动态代理生成的类为 class com.sun.proxy.$Proxy0cglib代理生成的类为class cn.test.baocuonisini.UserDao$$EnhancerByCGLIB$$b5ec9bbd。4.静态代理在编译时产生class字节码文件可以直接使用效率高。 5.动态代理必须实现InvocationHandler接口通过反射代理方法比较消耗系统性能但可以减少代理类的数量使用更灵活。6.cglib代理无需实现接口通过生成类字节码实现代理比反射稍快不存在性能问题但cglib会继承目标对象需要重写方法所以目标对象不能为final类。