什么是模板方法模式
这个模式我认为和单例模式一样,都是比较简单好懂的模式。而且在学习Java多态的时候也会直接用到的。其主要内容就是将各个类公共的方法抽取出来,做成一个抽象类,将公共方法的具体实现延迟到子类中去。这样可以避免代码高度重复且难以维护。举例来说:
假如我们需要一个计算一个方法时间开销的代码。如果写进一个具体方法里,那么在测试另一个方法时,就又需要编写一次。
long start = System.currentTimeMillis();
code();
long end = System.currentTimeMillis();
System.out.println("花费时间:"+(end-start));
抽取公共部分做成抽象类
我们可以把上一部分的代码做成一个抽象模板类,所有子类需要基础这个模板类。子类具体要测试的代码写到code
方法中,父类中code
方法写成抽象类,如下:
public abstract class Template
{
public void spendTime() {
long start = System.currentTimeMillis();
code();
long end = System.currentTimeMillis();
System.out.println("花费时间:"+(end-start));
}
public abstract void code() ;
}
接下来只要子类重写code
方法再调用spendTime
来测试即可。