模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。
模板模式解决的问题
一些方法通用,却在每一个子类都重新写了这一方法,带来大量重复的代码的问题。相同的部分父类给出统一的模板,不同的部分,子类进行重写。
在定义功能时,一部分功能是确定的,但是有一部分功能不确定,而确定的部分使用不确定的部分时,那么这时就应该把不确定的部分暴露出去,由该类的子类完成。
简单代码如下;
/*
模板方法
*/
public abstract class GetTime {
public void time() {
long start=System.currentTimeMillis();
runcold();
long end=System.currentTimeMillis();
System.out.print("毫秒:"+(end-start));
}
public abstract void runcold();
}
/*
子类重构父类中的方法
*/
public class SubTime extends GetTime{
@Override
public void runcold() {
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
}
}
/*
测试类
*/
public class Test {
public static void main(String[] args) {
GetTime getTime=new SubTime();
getTime.time();
}
}(不同颜色代表不同的类)