1. 什么是动态代理 ?
使用jdk的反射机制,创建对象的能力,创建的是代理类的对象。而不用你创建类文件。不用写java文件。
动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。
jdk动态代理,必须有接口,目标类必须实现接口,没有接口时,需要使用cglib动态代理
2. 知道动态代理能做什么?
可以在不改变原来目标方法功能的前提下,可以在代理中增强自己的功能代码。
程序开发中的意思。
比如:你所在的项目中,有一个功能是其他人(公司的其它部门,其它小组的人)写好的,你可以使用。
GoNong.class , GoNong gn = new GoNong(), gn.print();
你发现这个功能,现在还缺点,不能完全满足我项目的需要。我需要在gn.print()执行后,需要自己在增加代码。
用代理实现 gn.print()调用时, 增加自己代码,而不用去改原来的 GoNong文件。
后面会讲 mybatis ,spring
------------------------------------------------------------------------
1.代理
2. 在开发中也会有这样的情况,你有a类,本来是调用c类的方法,完成某个功能。但是c不让a调用。
a -----不能调用 c的方法。
在a和c直接创建一个b代理,c让b访问。
a --访问b---访问c
3.使用代理模式的作用
1.功能增强:在你原有的功能上,增加了额外的功能。 新增加的功能,叫做功能增强。
2.控制访问:代理类不让你访问目标,例如商家不让用户访问厂家。
4.实现代理的方式
1.静态代理