栏目:Java8基础 作者:admin 日期:2016-08-13 评论:1 点击: 1,521 次
代理的作用是什么呢?教科书上是这样描述的:代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
读完上面这段话,你是不是感觉明白了点,但是又感觉没有明白呢?反正我是感觉有点收获,但是也并没有给我留下非常深的印象,只是感觉代理不过如此而已。其实代理功能还是非常强大的,应该给人以思想冲击才对。如下面这种情况:别人给了我一个接口,但是我不想写Java文件实现它,我可以通过反射和代理让jvm给我生成一个代理类,这样是不是感觉很强大呢,对代理留下了深刻印象呢?不知道你们感觉如何,但是我感觉就像发现了新大陆一样,原来代理可以这么玩儿:
1 2 3 |
public interface Reader { public void read(); } |
1 2 3 4 5 6 7 8 9 10 |
public class MyHandler implements InvocationHandler{ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ("read".equals(method.getName())) { System.out.println("this is read method"); } return null; } } |
1 2 3 4 5 6 7 |
public class Test { public static void main(String[] args) { Reader reader = (Reader) Proxy.newProxyInstance(Reader.class.getClassLoader(), new Class<?>[]{Reader.class}, new MyHandler()); reader.read(); } } |
看到了吧?我没有写Java文件,同样生成了一个Java对象。这就是代理的强大之处。其实,Java中很多基础知识,只不过我们并没有深入的理解它,只停留在了表面 ,并没有体会到它们的强大之处。
解读不一样的Java,突破思想的局限,是每个开发者应该追求的目标,而这个也是【金丝燕网】所追寻的目标。关于更多Java知识的交流与探讨,请加群:
------====== 本站公告 ======------
金丝燕网,一个严谨的网站!