黑马程序员-Java高新技术_动态创建+代理+aop概念+sprint概念视频学习笔记

        代理模式有一个要点就是代理类的要与目标类有相同的接口。
        jvm有动态创建类的api,但使用jvm动态创建类需要指定一个接口。可以使用CGLIB开源库可以无需指定接口二去动态创建类。
        aop主要靠代理模加动态创建类实现,Poxy类用于动态创建新类,而这个新类是在目标类的代理类。简单使用代码:
    Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
    Constructor constructor = clazzProxy1.getConstructor(InvocationHandler.class);
    Collection proxy2 = (Collection)constructor.newInstance(new InvocationHandler(){

            public Object invoke(Object proxy, Method method, Object[] args)
                    throws Throwable {
                return null;
            }
            
        });

 

知识点1:
Proxy创建的新类的方法,内部实现都是调用创建实例对象时传入的InvaocationHandler对象的invoke方法。invoke方法声明:public Object invoke(Object proxy, Method method, Object[] args)。如果其实现继续调用proxy对象的方法就会陷入死循环,因为proxy对象所有方法的实现在调用invoke方法。
InvaocationHandler是抽象类所以我们需要定义新的子类,在子类里invoke方法应该调用代理目标的方法。
注意1:
Proxy创建的新代理类也是继承自object类,它并不会把object类的所有方法都转手交给InvaocationHandler处理,只会把hashcode,toString和equals三个方法转给InvaocationHandler。
 
                                                 ---------------------- android培训java培训、期待与您交流! ----------------------
  详细请查看:http://edu.csdn.net/heima
posted @ 2012-04-19 08:28  lcode  阅读(326)  评论(0编辑  收藏  举报