A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 长沙-小知姐姐 于 2019-1-3 09:33 编辑





代理设计模式

代理模式基本概述

代理这个词并不罕见,在现实生活中代理的例子也无处不在,渗透到了生活中的每一个角落,例如我们现在每天用的手机,每次我们需要给运营商交话费的时候,你不会直接去找移动或者联通的总部,然后去交话费,而是直接找一个离你最近的运营商代理,或者直接在网上找一个运营商代理就能直接交话费了。

而java中的代理模式应用也特别广泛,代理模式主要的作用就是如果你已经有了一个对象,你想在这个对象的方法使用的时候需要对原有的方法进行改进,就可以使用代理模式了

代理模式详解

代理的基本模型图解



java中的代理的两种模式:

1. 静态代理

就是采用自己编写代理类调用原有的方法,且对产生的结果进行控制,这种方式在编译期就会产生代理类


2. 动态代理
静态代理中,代理类是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是在运行时根据我们在

Java代码中的“指示”动态生成的,代理类在程序运行时创建的代理方式被成为动态代理。



2.写一个类实现目标接口,这个类就是我们的目标类,以后用来增强的

3.为目标类创建一个代理类


4.编写测试                              

最后输出的结果中就能看出代理方法在执行的时候帮我们去执行了目标中的方法,但是目标方法执行之前和之后都进行了一些增强功能


5.总结

静态代理虽然能够实现对目标对象进行增强,但是静态代理再实现的时候需要自己编写代理类,代理类中明确的指定对那个目标类进行增强,所以静态代理使用非常局限,在真实开发中一般都会使用动态代理


动态代理实现

动态代理在实现的时候可以选择不同的方式,这里我们给大家讲解一种JDK自带的方式

1.  编写一个目标类接口,用来规范方法

2.编写一个目标类实现接口,以后这个类会被增强

3.通过jdk中的api在程序中动态产生代理对象


4.动态代理总结
动态代理可以让我们在程序运行的过程中动态产生目标类的代理类字节码,并且创建对象,在动态代理实现的过程中可以很方便的对任何实现了接口的目标类去创建代理对象,完成对目标方法的增强

代理模式总结
file://localhost/Users/itcast/Library/Caches/TemporaryItems/msoclip/0/clip_image002.png
代理模式能够很方便在不修改原有类的基础之上增强类中的方法,对原有的功能进行一些改进,当然代理模式在开发中的应用也很广泛,特别是动态代理,基本上所有的框架都用到了动态代理,Spring等框架更是依赖动态代理来完成了很多很灵活的功能,所有动态代理再现在的企业开发中其实是非常重要的,但是可能平时自己在编码阶段很少接触动态代理,但是如果想更好的去理解一些框架,动态代理的知识还是非常重要的
      
                        
                                                                                                                                                
                                
                        
               



1 个回复

倒序浏览
收藏了,谢谢楼主提供的资料
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马