第一章:代理的介绍
介绍:我们需要掌握的程度
动态代理(理解) 基于反射机制
掌握的程度:
1.什么是动态代理?
2.动态代理能够做什么?
后面我们在用Spirng和Mybatis的时候,要理解怎么使用的
1.什么是代理?
代理,在我们日常生活之中就有体现,代购,中介,换ip,商家等等.
比如有一家美国的大学,可以对全世界招生.留学中介(代理 )
留学中介(代理):帮助这家美国的学校招生,中介是学校的代理中介是代替学校完成招生功能
代理特点
中介和代理他们要做的事情是一致的:招生
中介是学校代理,学校是目标
家长-------->中介(学校介绍,办理入学手续)---------->美国学校
中介是代理,收取费用
2.为什么要找中介
为什么要找中介?
1.中介是专业的,方便.
2.家长现在不能自己去找学校。家长没有能力访问学校.或者美国学校不接收个人来访
买东西都是商家卖, 商家是某个商品的代理, 你个人买东西,肯定不会让你接触到厂家的.
第二章:静态代理
2.1 使用代理模式的作用
功能增强:在你原有的功能上,增加了额外的功能.新增加的功能,叫做功能增强
控制访问:代理类不让你访问目标,例如商家不让用户访问厂家
2.2 静态代理的优缺点
我们再次总结一下静态代理的优缺点
优点:
实现简单
容易简单
确定:当你的项目中,目标类的代理类很多的时候,有一下的缺点
当目标类增加了,代理类可能也需要成倍的增加
当你的接口中功能在增加了,或者修改了,会影响众多的实现类,厂家类,代理都需要修改,影响比较多.
动态代理的实现:
jdk动态代理(理解):使用java反射包中的类和接口实现动态代理的功能,反射包java.lang.reflect,里面有三个类:InvocationHandler,Method,Proxy
cglib动态代理(了解): cglib是第三方的工具库,创建代理对象
cglib的原理是继承,cglib通过继承目标类,创建它的子类,在子类中
重写父类中同名的方法,实现功能的修改。
因为cglib是继承,重写方法,所以要求目标类不能是fina1的,方法也不能是final的。cglib的要求目标类比较宽松,只要能继承就可以了。cglib在很多的框架中使用,
比如mybatis,spring框架中都有使用。