设计模式之代理模式

所谓代理,是指具有与被代理对象相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理。

通俗一点就是说我想找个女朋友,但是要去约会,要和女孩子玩才能够找到女朋友,但是我是一个很害羞的人,所以我就去找媒婆给我找一个现成的女票,我不用去关系媒婆事怎么找的,用什么方式找的,我就继续打我的游戏,做我的事情,

代理模式又分为动态代理和静态代理,动态代理分为(jdk动态代理和cglid动态代理)

代理模式是面向接口的

1,静态代理

代码:

1-1接口方法

 

1-2代理对象

1-3目标对象

代理对象和目标对象都实现了接口,但是代理对象并不去做真正的逻辑处理,而是委托目标对象去做,它就自己做自己的其他事情(Spring AOP就很好的利用了代理模式)

1-4客户端(主函数模拟)

 

由上面的静态代理种可以看出它其实很不灵活,当我接口里面新增方法的时候,代理(Proxy)里面就要新增方法,不然调用不了,这样代码就会很冗余

 

所以引入了动态代理模式,动态代理的核心技术是反射,

 

2,动态代理(jdk)

2-1代理类

与前面的静态代理不同的是,当借口新增方法的时候我不需要手动的在代理类(Proxy)里去新增方法,我只需要通过反射的方式动态的去调用目标对象的方法,用jdk代理需要实现 InvocationHandler() 接口

 

2-2客户端(主函数)

 

 

3.cglib代理

通过继承的方式来实现,具体实现以后作更新

 

posted @ 2019-07-14 12:59  苏格拉的底牌  阅读(151)  评论(0编辑  收藏  举报