程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring中的Template和Callback模式

Spring中的Template和Callback模式

編輯:關於JAVA

Spring中的Callback模式與Template模式合用,隨處可見。Template method被廣泛的使用,像Servlet就是使用這個模式。Template mothod模式雖然能簡化很多重復的代碼,但這種模式的也有不少限制。Template mothod將一個功能的實現分成許多小的步驟,在父類中定義了這些步驟的順序,讓子類來具體實現每一個小的步驟。這些小的步驟是protected,以防止用戶不正確的使用這些小的步驟而產生異常。這樣就產生了一個限制,那就是你需要繼承Template然後重新實現具體的小步驟。如果這個Template有許多方法,就像JdbcTemplate,如果你每次繼承這個龐大的類,然後只是重寫某個小步驟中來訂制你自己的功能,就會顯得非常笨重,更何況數據庫操作使用的如此頻繁,難道你每進行一個操作就通過繼承訂制一個,顯然不可能這麼做。

Spring使用Callback模式與之配合,達到了去掉重復代碼的效果,同時增加了很大的靈活性,你只需要實現某些CallBack就可輕松訂制出Template。

那麼什麼時候才是Callback模式與Template模式結合的最佳時機呢。顯然如果每個具體的步驟都需要真正去具體實現而不是簡單的改變參數或設置某個對象就ok的話,使用Callback很難去訂制,因為你可能需要傳遞多個Callback作為參數,並讓用戶去實現,是用Java的內部類本來就是一個比較丑陋的語法,更何況參數是多個。這相當於你把每個小步驟封裝成為接口,然後分別繼承之然後實現。顯然沒有達到方便靈活的效果,這時候直接使用Template method模式就比結合Callback要好。而如果用戶只需要定制一個方法能就達到用戶的要求,或者更簡單,只是設置不同的參數,那麼使用Callback就具有很好的靈活性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved