标签:final extend 防止 因此 bst 不同 void func ack
地基,铺线,房子户型都是一样的,由开发商决定,但是在交房之后,室内的装修风格和场景布置却是由业主决定,在这个场景中,开发商其实就是一个抽象类,地基,铺线,房子户型都是可以复用的,但是装修却是不可复用的,必须由业主决定,此时的每一个业主的房子就是一个实现的子类。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,这些实现都用到了模板模式。标签:final extend 防止 因此 bst 不同 void func ack
原文地址:https://www.cnblogs.com/Chenjiabing/p/12637122.html