读书人

动态署理~插头是不固定的

发布时间: 2012-10-28 09:54:44 作者: rapoo

动态代理~插头是不固定的

/*动态代理和静态代理的区别是:    静态代理之所以静态是知道他要代理的东西是什么,也就是插槽是固定的,他只能接收固定的插座*/class MyConnectionHandler implements InvocationHandler{    private Connection realConnection;     private Connection warpedConn ;     private DataSource dataSource;    MyConnectionHandler(DataSource dataSource){        this.dataSource = dataSource;    }       Connection bind(Connection conn){ //返回一个代理对象     this.warpedConn = (Connection)Proxy.newProxyInstance(      this.getClass().getClassLoader(),      new Class[]{Connection.class},      this); //Proxy这个类可以理解成他也会写代码,他会用类加载器写一个实现了Connection.class的接口的类,而这个类的具体实现由MyConnectionHandler 来完成       return warpedConn;   }   public Object invoke(Object proxy,Method method ,Object[] args)throws Throwable{   if("close".equals(method.getName())){ //对我们制定的方法做处理       this.dataSource.connsPool.addLast(this.warpedConn);   }   return method.invoke(this.conn,args);  }   }

读书人网 >软件架构设计

热点推荐