模板方法模式,就是定义个操作中算法的骨架,而将操作中的细节推迟到子类去实现。
比如说,我定义了一个模板方法叫印刷,这个印刷方法是这样的:首先是"晒版",然后是"打印".
那么具体的抽象类如下:
/**
* 印刷模板
* @author shuaicenglou
*
*/
public abstract class Press {
public abstract void sunPress(); //晒版方法
public abstract void printPress(); //打印方法
public void print(){
sunPress(); //先晒版
printPress(); //后打印
}
}
两个具体实现类如下:
/**
* 普通印刷
* @author shuaicenglou
*
*/
class PublicPress extends Press{
@Override
public void sunPress() {
System.out.println("日照晒版");
}
@Override
public void printPress() {
System.out.println("机器打印");
}
}
/**
* 激光印刷
* @author shuaicenglou
*
*/
class SuperPress extends Press{
@Override
public void sunPress() {
System.out.println("紫外线晒版");
}
@Override
public void printPress() {
System.out.println("激光打印");
}
}
在这里可以看到,印刷模板的印刷实现的基石,无论是普通印刷还是激光印刷都建立在印刷这个抽象类的基础之上,他们有着共同的逻辑骨架,只是实现的细节不一样