在水木回一個(gè)大牛的帖子討論攔截器,也發(fā)到這里。
所謂攔截,是新媳婦回娘家,路遇強(qiáng)盜。重要的是她能不能回家已經(jīng)取決與強(qiáng)盜而不是自己。看下面的代碼:
interface AbcInterceptor{
boolean beforeExecute(Context context,Command cmd);
void afterExecute(Context context,Command cmd);
}
boolean beforeExecute(Context context,Command cmd);
void afterExecute(Context context,Command cmd);
}
我認(rèn)為這個(gè)所謂的攔截器其實(shí)名不符其實(shí)。原因是這強(qiáng)盜太弱了,他無法阻止新媳婦回娘家,所以也就無所謂攔截,撐死是路邊的野草在新媳婦經(jīng)過的時(shí)候擺了擺頭——所謂觸發(fā)的事件而已。
真正的攔截器該是這樣:
interface RealInterface{
void intercept(Context context,Command cmd);
}
void intercept(Context context,Command cmd);
}
看Xwork的代碼會(huì)比較清楚。這樣的攔截,才所謂攔截,可憐的人兒能不能見到她娘已經(jīng)完全掌握在強(qiáng)盜的手里——在強(qiáng)盜的作用下,她可能根本回不了家,也可能被賣了還對外說自己回到了娘家。
XWork里面其實(shí)每個(gè)interceptor的intercept方法大多要調(diào)用actionInvocation.invoke()方法,來完成攔截器鏈?zhǔn)秸{(diào)用。而ServletFilter里面也大多要寫一個(gè)chain.doFilter(..)。這里面其實(shí)有正主執(zhí)行前后的玄機(jī),也有控制其是否能走下去的能力。
一家之言。
如果把那句話讓你控制你就爽了,等讓你一次爽100次后,你就知道,還是悠著點(diǎn)來比較爽~~
簡潔就是美~
1、對技術(shù)的原始創(chuàng)新;2、把盡量多的好奇的人引入領(lǐng)域的大門。
普通貢獻(xiàn)也有兩個(gè):1、學(xué)會(huì)技術(shù)后在軟件工廠里沖鋒拔寨的,2、和那些已經(jīng)入了門的業(yè)內(nèi)討論者分享學(xué)習(xí)所得的。