一个抽象类Template主类,充分发挥抽象类的作用,一部分方法定义好,另一部分以接口的形式体现——需要每个子类具体地进行实现。
此接口是事务管理的核心,提供了三个需要实现的函数:(实现手动)
commit(TransactionStatus status) ;
getTransaction(TransactionDefinition definition) ;
rollback(TransactionStatus status) ;
5.JdbcTemplate,jdbc提供的数据访问模板,分别适用于不同的持久化机制,Spring将数据访问过程中固定的和可变的部分明确划分为两个不同的类:模板和回调。模板就指的是模板方法,固定的有数据库连接池等内容,不固定的有sql方法——子类具体实现。
public abstract class GameOrderTemplate {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play() {
//初始化游戏
initialize();
//开始游戏
startPlay();
//结束游戏
endPlay();
}
}
/*
* @description 使用Lambda表达式简化
* @Date 2020/3/2 17:43
*/
public class LambdaGameOrderTemplate {
// abstract void initialize();
// abstract void startPlay();
// abstract void endPlay();
//模板 打游戏方法
public final void play(Consumer<String> initialize, Consumer<String> startPlay, Consumer<String> endPlay) {
//初始化游戏
initialize.accept("初始化游戏...");
//开始游戏
startPlay.accept("开始游戏...");
//结束游戏
endPlay.accept("结束游戏...");
}
}
public class Main {
/**一般方法*/
@Test
public void startGame() {
GameOrderTemplate orderTemplate = new BrainGameTemplate();
orderTemplate.initialize();
}
/** lambda */
@Test
public void lambdaStartGame() {
LambdaGameOrderTemplate orderTemplate = new LambdaGameOrderTemplate();
orderTemplate.play(
System.out::println,
System.out::println,
(String c) -> {
System.out.println(c);
}
);
}
}
初始化游戏...
开始游戏...
结束游戏...
《Java8实战》 - 8.2.2 使用 Lambda 重构面向对象的设计模式 之 模板模式
原文:https://www.cnblogs.com/zhazhaacmer/p/12396804.html