SPRing中的Callback模式與Template模式合用,隨處可見。Template method被廣泛的使用,像Servlet就是使用這個模式。Template mothod模式雖然能簡化很多重復(fù)的代碼,但這種模式的也有不少限制。
Spring使用Callback模式與之配合,達到了去掉重復(fù)代碼的效果,同時增加了很大的靈活性,你只需要實現(xiàn)某些CallBack就可輕松訂制出Template。
那么什么時候才是Callback模式與Template模式結(jié)合的最佳時機呢。顯然假如每個具體的步驟都需要真正去具體實現(xiàn)而不是簡單的改變參數(shù)或設(shè)置某個對象就ok的話,使用Callback很難去訂制,因為你可能需要傳遞多個Callback作為參數(shù),并讓用戶去實現(xiàn),是用java的內(nèi)部類本來就是一個比較丑陋的語法,更何況參數(shù)是多個。這相當于你把每個小步驟封裝成為接口,然后分別繼續(xù)之然后實現(xiàn)。顯然沒有達到方便靈活的效果,這時候直接使用Template method模式就比結(jié)合Callback要好。而假如用戶只需要定制一個方法能就達到用戶的要求,或者更簡單,只是設(shè)置不同的參數(shù),那么使用Callback就具有很好的靈活性。
|
新聞熱點
疑難解答