码迷,mamicode.com
首页 > 其他好文 > 详细

GOF23--代理模式

时间:2020-06-18 12:30:00      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:size   object   handle   gof23   invoke   this   并且   load   开闭原则   

 

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

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

 

技术图片

 

 

 

代理模式的实现!

          静态代理:

                           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--代理模式

标签:size   object   handle   gof23   invoke   this   并且   load   开闭原则   

原文地址:https://www.cnblogs.com/wffzk/p/13156819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!