地基
,铺线
,房子户型
都是同样的,由开发商决定,可是在交房以后,室内的装修风格
和场景布置
倒是由业主决定,在这个场景中,开发商其实就是一个抽象类,地基,铺线,房子户型都是能够复用的,可是装修倒是不可复用的,必须由业主决定,此时的每个业主的房子就是一个实现的子类。模板方法的实现条件注意:算法
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
,这些实现都用到了模板模式。