模板方法模式
模板方法模式:在一个抽象类
公开定义了执行它的方法的模板
。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
-
AbstractClass 抽象类
- 类中实现了模板方法,定义了骨架
- 有一个模板方法,已经写好了逻辑,先执行什么方法,再执行上面方法
- 这些具体执行的方法要子类去重写,但是方法的调用顺序已经定了
- 具体子类需要去实现其它的抽象方法
- 类中实现了模板方法,定义了骨架
-
ConcreteClass 实现抽象方法
抽象模板类
abstract class AbstractClass {
protected abstract void base1();
protected abstract void base2();
// 模板方法定义的框架
public final void templateMethod() {
//调用基本方法,完成固定逻辑
base1();
base2();
}
}
具体实现类(2种)
class ConcreteClass1 extends AbstractClass {
@Override
protected void base1() {
// 具体模板1 业务逻辑
System.out.println("具体模板1:base1()逻辑");
}
@Override
protected void base2() {
// 具体模板1 业务逻辑
System.out.println("具体模板1:base2()逻辑");
}
}
class ConcreteClass2 extends AbstractClass {
@Override
protected void base1() {
// 具体模板2 业务逻辑
System.out.println("具体模板2:base1()逻辑");
}
@Override
protected void base2() {
// 具体模板2 业务逻辑
System.out.println("具体模板2:base2()逻辑");
}
}
main方法
public static void main(String[] args) {
AbstractClass abstractClass1 = new ConcreteClass1();
AbstractClass abstractClass2 = new ConcreteClass2();
abstractClass1.templateMethod();
abstractClass2.templateMethod();
}
具体模板1:base1()逻辑
具体模板1:base2()逻辑
具体模板2:base1()逻辑
具体模板2:base2()逻辑
jdbcTamplate就是标准的模板方法
- 不同的数据库创建不同的子类
- 但是步骤是没有变化的