代理模式:
1):什么是代理模式:
代理模式是GoF四人组提出的23中设计模式之一。(如果一个类T不想被另一个类C直接访问,或者是这个类
在不修改自身源码的情况下,增强自己的功能,达到这种目的就可以使用代理模式,可以通过中间类P来完成需求。此时类P称为代理类T被称为目标类,C被称为客户类) 也就是说,客户类C想要与目标类T发生联系,都需要代理类P来完成,即,客户类只能和代理类发生直接的联系。
1):什么是代理模式:
代理模式是GoF四人组提出的23中设计模式之一。(如果一个类T不想被另一个类C直接访问,或者是这个类
在不修改自身源码的情况下,增强自己的功能,达到这种目的就可以使用代理模式,可以通过中间类P来完成需求。此时类P称为代理类T被称为目标类,C被称为客户类) 也就是说,客户类C想要与目标类T发生联系,都需要代理类P来完成,即,客户类只能和代理类发生直接的联系。
如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/cd091f05e0abd55aac3c9ea95917a55a.png)
2):代理模式中的角色:
目标类
客户类
代理类
3):代理模式的目的:
<1>为了保护或者隐藏一个类
<2>在不修改源码的情况下,增强某个类的功能。
4):代理模式的分类:
<1>根据代理类创建的时间的不同,或者说是代理关系确立的时间的不同分为,静态代理和动态代理。
其中动态代理又根据实现的技术的不同分为若干类,我们常用的有JDK的Proxy,CGLIB动态代理,javassist动态代理。。。。
<1>为了保护或者隐藏一个类
<2>在不修改源码的情况下,增强某个类的功能。
4):代理模式的分类:
<1>根据代理类创建的时间的不同,或者说是代理关系确立的时间的不同分为,静态代理和动态代理。
其中动态代理又根据实现的技术的不同分为若干类,我们常用的有JDK的Proxy,CGLIB动态代理,javassist动态代理。。。。
静态代理
1>:什么是静态代理:
如果代理模式中的代理类是由程序员手工编写的,代理关系在程序运行之前就已经确立了,这种代理模式就是静态代理。
2>:使用静态代理的要求:
由于代理类是要代替吗目标类来和客户类发生联系,所以代理类的要保证具有目标类的全部功能,,为了达到这个要求,
我们一般是通过让代理类和目标类实现相同的业务接口来进行约束的,也可一让代理类和目标类继承同一个父类,目标类中的对象称为目标对象,代理类中的对象称为是代理对象,目标类中的方法称为目标方法,代理类中的方法称为代理方法。
由于代理类是要代替吗目标类来和客户类发生联系,所以代理类的要保证具有目标类的全部功能,,为了达到这个要求,
我们一般是通过让代理类和目标类实现相同的业务接口来进行约束的,也可一让代理类和目标类继承同一个父类,目标类中的对象称为目标对象,代理类中的对象称为是代理对象,目标类中的方法称为目标方法,代理类中的方法称为代理方法。
3>:静态代理的使用要求:
代理类中应该含有目标类对象的引用,以便于代理方法中直接调用目标对象的目标方法。
代理类中应该含有目标类对象的引用,以便于代理方法中直接调用目标对象的目标方法。
4>:静态代理类的目标对象是在代理类中创建的,而不是由外部传入的,这样就就起到了保护和隐藏目标类的作用。