zoukankan      html  css  js  c++  java
  • 模仿Struts2的Interceptor拦截器实现

    模仿Struts2的Interceptor拦截器实现

    public interface Invocation {
    
        public Object invoke();
        
    }
    public interface Interceptor {
    
        public Object intercept(Invocation invocation);
        
    }
    public class Target {
    
        public Object execute() {
            System.out.println("Targer.execute()");
            return "Targer-execute";
        }
    }
    public class InvocationChain implements Invocation {
    
        private Iterator<Interceptor> iterator = null;
        
        private Target target = new Target();
        
        public void init(List<Interceptor> interceptors) {
            List<Interceptor> interceptorsList = new ArrayList<Interceptor>(interceptors);
            this.iterator = interceptorsList.iterator();
        }
        
        public Object invoke() {
            if(iterator.hasNext()) {
                return iterator.next().intercept(this);
            } else {
                return target.execute();
            }
        }
    
    }
    public class IntOne implements Interceptor {
    
        public Object intercept(Invocation invocation) {
            Object result = null;
            System.out.println("IntOne.intercept()-begin");
            result = invocation.invoke();
            System.out.println("IntOne.intercept()-end");
            return result;
        }
    
    }
    public class IntTwo implements Interceptor {
    
        public Object intercept(Invocation invocation) {
            Object result = null;
            System.out.println("IntTwo.intercept()-begin");
            result = invocation.invoke();
            System.out.println("IntTwo.intercept()-end");
            return result;
        }
    
    }
    public class Demo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            List<Interceptor> interceptors = new ArrayList<Interceptor>();
            interceptors.add(new IntOne());
            interceptors.add(new IntTwo());
            InvocationChain chain = new InvocationChain();
            chain.init(interceptors);
            System.out.println(chain.invoke());
        }
    
    }
  • 相关阅读:
    java集合框架复习(一)
    java集合框架复习
    java集合框架
    Mysql视图的作用及其性能分析
    php语法基础
    MySQL UNION 与 UNION ALL 语法与用法
    mysql fetch 系列函数
    跨线程传递数据解决方案 ThreadLocal 和 HystrixRequestVariableDefault
    java中带参数的try(){}语法含义是什么?
    Activiti 设置comment的用户
  • 原文地址:https://www.cnblogs.com/daxin/p/3352334.html
Copyright © 2011-2022 走看看