代理模式之静态代理

  因为前几天作生成文档的功能大量用到了反射机制,因此我闲时看了一下java反射机制的原理,发现里面大量使用了代理模式(java方法的method.invoke()代理native方法的method.invoke,不在此文章展开),因为对代理模式有点陌生了。写这篇文章从新加深一下我对代理模式的理解。java

  代理模式顾名思义就是,找一个代理人帮你作事。好比B是买房者,要买房必需要通过中介A代理买房,由于B没有联系房东的方式。这里有三个角色,一个是代理对象即A,一个是目标对象B,第三个是A和B的抽象接口对象C。spa

代理模式分为静态代理和动态代理,如下讲静态代理。下一篇文章讲动态代理代理

静态代理:代码编译时就肯定了被代理的类是哪个;对象

 

  静态代理blog

下面写一个例子来实现静态代理。接口

 

运行结果:文档

 

 

能够看到A做为代理对象,能够加强B的接口方法的功能。编译

由此知道代理模式的好处是:原理

在不修改目标对象的功能前提下,对目标功能扩展和加强 ,对目标功能增长拦截。好比中介加强了买房人的买房功能,明星经纪人帮明星拦截了狗仔。扩展

固然也有坏处:

好比这种代理模式属于静态代理。每次有目标对象,都得增长一个代理对象。并且接口的功能若是要改变的话,目标和代理对象都得改,十分不方便。

相关文章
相关标签/搜索