代理模式之静态代理
发布时间:
前文已经详细阐述过代理模式的定义,我们也知道了各种代理模式样式差别很大,不容易从程序上辨认,但是可以从功能上区分。那今天我们就讲讲代理模式之一的静态代理。
众所周知,在我们Java程序中代理模式分为:静态代理和动态代理(动态代理又分为:JDK动态代理和CGLIB动态代理)两种代理从虚拟机加载类的角度来讲,本质上都是一样的,都是在原有类的行为基础上,加入一些多出的行为,甚至完全替换原有的行为。
静态代理采用的方式就是我们手动的将这些行为换进去,然后让编译器帮我们编译,同时也就将字节码在原有类的基础上加入一些其他的东西或者替换原有的东西,产生一个新的与原有类接口相同却行为不同的类型。
通常情况下静态代理类和目标类通常都会实现同一个接口或者派生自同一父类。静态代理,顾名思义,就是静态的,一旦创建了就不允许修改了或者说很难修改(指的是程序运行期间)
专业的来说,如若代理类在程序运行之前就已经存在,那么这种代理方式被称为静态代理。这种情况下的代理类通常都是我们在Java代码中定义的。
我们使用代理模式解决了相关问题,从静态代理的使用上来看:1.代理类一般要持有一个被代理的对象的引用。2.对于我们不关心的方法,全部委托给被代理的对象处理。3.自己处理我们关心的方法。
当然静态代理也是有着相应的优缺点的,关于这个,我们后续继续探讨。
推荐阅读
更多>