GOF23--代理模式

Posted wffzk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GOF23--代理模式相关的知识,希望对你有一定的参考价值。

 

目的:客户不方便或者不能访问某一个对象的时候可以通过代理对对象进行访问,代理起到中介的作用

优点:职责清晰;符合开闭原则,利于扩展

 

技术图片

 

 

 

代理模式的实现!

          静态代理:

                           1)分为代理者和被代理者

                           2)代理者和被代理者具有相同的功能(实现相同的接口)

                           3)代理者能访问被代理者(代理者包含被代理者对象)

                           4)代理者执行功能时会调用被代理者的功能,同时进行功能的扩展

                           缺点:每个代理类只能代理一个业务,如果要代理更多的业务,需要定义大量新的代理类。

 

 

         动态代理:静态代理能做的动态代理都能做,并且可以动态生成代理类和代理对象,不需要手动编写

                            JDK动态代理      实现反射包里的InvocationHandler接口  

                                                 技术图片

 

 

         代理类核心:1)被代理者对象;

                         2)传入被代理者对象返回代理者对象的方法 

                           Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),this)

                          动态生成代理者对象,参数1是类加载器,为了加载被代理对象的类;2是对象实现的接口数组(  局                         限性:被代理者必须要实现接口),3是InvocationHandler实现对象

                         3)重写invoke方法   

                           method.invoke(object,args); method 是指被代理者需要调用的方法 ;args 调用方法需要的参数

 


 

以上是关于GOF23--代理模式的主要内容,如果未能解决你的问题,请参考以下文章

12-代理(Proxy)模式Ruby实现

GOF 23设计模式之(结构型模式一)

使用Go实现GoF的23种设计模式

实践GoF的设计模式:代理模式

设计模式GOF23大纲

GOF23设计模式之单例模式