zoukankan      html  css  js  c++  java
  • Java代理模式

    public class ServiceProxy implements InvocationHandler{
        /**目标对象*/
        private Object targetObj;
        
        public ServiceProxy(Object targetObj) {
            this.targetObj = targetObj;
        }
        /**
         * 产生一个代理对象
         * @return 代理对象
         */
        public Object getProxy() {
            //产生代理对象,第一个参数为目标对象的类加载器,第二个参数为目标对象实现的接口列表,第三个参数为InvocationHandler的实现类
            //当调用代理对象方法时,会执行InvocationHandler实现类的invoke方法
            return Proxy.newProxyInstance(targetObj.getClass().getClassLoader(),
                    targetObj.getClass().getInterfaces(), this);
        }
        /**
         * proxy 代理对象,method 目标方法对象,args 目标方法执行时传入的实参列表
         */
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            
            //得到目标对象的属性列表
            Field[] f = targetObj.getClass().getDeclaredFields();
            for (Field field : f) {
                //类型是否为接口
                if(field.getType().isInterface()) {
                    //产生实现类对象
                    Object implObj = DaoFactory.getBean(field.getType().getSimpleName());
                    field.setAccessible(true);
                    field.set(targetObj, implObj);
                }
            }
            //执行目标对象的目标方法,得到目标方法执行后的返回结果
            Object returnObj = method.invoke(targetObj, args);
            return returnObj;
        }
    }
  • 相关阅读:
    十一.SVM神经网络
    九.自组织竞争神经网络
    八.DBN深度置信网络
    七.RBM受限玻尔兹曼机
    六.随机神经网络Boltzmann(玻尔兹曼机)
    二十公里法则
    五.反馈(Hopfield)神经网络
    Python进行Android开发步骤
    django中的中间件机制和执行顺序
    简单的Python 火车抢票程序
  • 原文地址:https://www.cnblogs.com/FivePointOne/p/13468079.html
Copyright © 2011-2022 走看看