模式定义
模板方法(TemplateMethod)模式:定义一个操作中的算法骨架,而将一些步骤的实现延迟到子类中实现。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
例子
就拿上一篇使我开悟的例子来说道说道,具体的需求是:需要通过数据抽取,数据计算,数据结果处理这三个步骤来完成业务,但是不同场景下,数据抽取的方式是不一样的。我当时写的代码可以用如下的类图表示:
SpecificBusiness.java
public abstract class SpecificBusiness {
public abstract void dataTrans();
public void dataCal(){
System.out.println("数据计算");
}
public void dataResult(){
System.out.println("数据结果处理");
}
public void exec(){
dataTrans();
dataCal();
dataResult();
}
}
SpecificBusiness1.java
public class SpecificBusiness1 extends SpecificBusiness {
@Override
public void dataTrans() {
System.out.println("场景1的数据抽取方法");
}
}
SpecificBusiness2.java
public class SpecificBusiness2 extends SpecificBusiness {
@Override
public void dataTrans() {
System.out.println("场景2的数据抽取方法");
}
}
Test.java
public class Test {
public static void main(String[] args) {
SpecificBusiness b1 = new SpecificBusiness1();
SpecificBusiness b2 = new SpecificBusiness2();
b1.exec();
b2.exec();
}
}
总结
模板方法模式是一种代码复用的基本技术。话说回来,当时我也没想到这也能被称为设计模式,我只想尽量消除重复代码,哈哈。