锁定老帖子 主题:Struts2源码分析讨论
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-31
似乎可以搞个简单例子,模拟这个过程:
public interface Test {//类似Interceptor接口 public String test(TestInvocation invocation); } public class Test1 implements Test { public String test(TestInvocation invocation) { System.out.println("hello!in test1"); return invocation.invoke(); } } public class Test2 implements Test { public String test(TestInvocation invocation) { System.out.println("hello in test2"); return invocation.invoke(); } } public interface TestInvocation {//类似ActionInvocation public String invoke(); } public class DefaultInvocation implements TestInvocation{ public Iterator interceptors; public String result; public String invoke() { if(interceptors.hasNext()){ Test test=(Test)interceptors.next(); result=test.test(this); } else result= "end"; return result; } public void init(){ Test t1=new Test1(); Test t2=new Test2(); List<Test> tlist=new ArrayList<Test>(); tlist.add(t1); tlist.add(t2); interceptors=tlist.iterator(); } public static void main(String[] args){ DefaultInvocation inc=new DefaultInvocation(); inc.init(); inc.invoke(); } } |
|
返回顶楼 | |
发表时间:2008-08-22
这个不是递归!而是一种设计模式!叫装饰模式!如果大家对Java中IO设计有比较深的理解的话,会发现很熟悉!
|
|
返回顶楼 | |
发表时间:2008-11-27
我的理解是这样的 :
1. DefaultActionInvocation interceptors.next() 然后 interceptor.getInterceptor().intercept(DefaultActionInvocation.this) 把程序调用转交给 Interceptor, 2. Interceptor 逻辑执行完毕后,执行 return invocation.invoke(); 把程序调用还给 Interceptor, 步骤 1 2 反复执行,interceptors 集合 也就一路next下去, 直到 Interceptor 被遍历一遍。 这个用法好像叫 java 回调。 |
|
返回顶楼 | |