地基
,鋪線
,房子戶型
都是同樣的,由開發商決定,可是在交房以後,室內的裝修風格
和場景佈置
倒是由業主決定,在這個場景中,開發商其實就是一個抽象類,地基,鋪線,房子戶型都是能夠複用的,可是裝修倒是不可複用的,必須由業主決定,此時的每個業主的房子就是一個實現的子類。模板方法的實現條件注意:算法
final
關鍵詞。好比遊戲的運行須要以下幾個步驟:設計模式
final
修飾。public abstract class Game { //抽象方法 abstract void initialize(); abstract void startPlay(); abstract void endPlay(); //模板方法 public final void play(){ //初始化遊戲 initialize(); //開始遊戲 startPlay(); //結束遊戲 endPlay(); } }
public class Football extends Game { @Override void endPlay() { System.out.println("足球遊戲結束......"); } @Override void initialize() { System.out.println("足球遊戲初始化中......"); } @Override void startPlay() { System.out.println("足球遊俠開始了......"); } }
public class TemplatePatternDemo { public static void main(String[] args) { //建立足球遊戲實例 Game game = new Football(); //開始遊戲 game.play(); } }
足球遊戲初始化中...... 足球遊俠開始了...... 足球遊戲結束......
AbstractPlatformTransactionManager
是Spring中的模板抽象類
,來看看它的繼承關係圖: PlatformTransactionManager
接口,重載了接口中的方法。//提交事務 public final void commit() //獲取TransactionStatus public final TransactionStatus getTransaction()
//提交事務 protected abstract void doCommit(DefaultTransactionStatus status); //回滾事務 protected abstract void doRollback(DefaultTransactionStatus status); //開始事務 protected abstract void doBegin(Object transaction, TransactionDefinition definition) //獲取當前的事務對象 protected abstract Object doGetTransaction()
DataSourceTransactionManager
、JtaTransactionManager
、RabbitTransactionManager
。具體承擔什麼樣的角色和責任不是本節的重點,再也不細說。JDBCTemplate
,AbstractPlatformTransactionManager
,這些實現都用到了模板模式。