一、作用
模板类形式化地定义一个算法框架,由它的子类来实现细节的处理。子类在实现细节时并不会改变算法步骤的执行次序。
二、概念
UML
三、使用
1. 抽象类中定义一个方法workOneDay()构建算法框架
public abstract class Worker {
private String name;
public Worker(String name) {
this.name = name;
}
/**
* 用final修饰方法,表示方法不可被重写 记录一天的工作 (1)进公司 (2)打开电脑 (3)工作 (4)关闭电脑 (5)离开公司 方法(3)由子类实现,其余方法在超类中都已实现
*/
public final void workOneDay() {
System.out.println("----work start---");
enterCompany();
computerOn();
work();
computerOff();
exitCompany();
System.out.println("----work end---");
}
private void exitCompany() {
System.out.println(name + "离开公司");
}
private void computerOff() {
System.out.println(name + "关闭电脑");
}
protected abstract void work();
private void computerOn() {
System.out.println(name + "打开电脑");
}
private void enterCompany() {
if (isNeedPrintDate()) {
System.out.print(new Date().toLocaleString() + "-->");
}
System.out.println(name + "进入公司");
}
/**
* 模板方法里可以可选的设置钩子(就是开关的意思把...)
*
* @return
*/
public boolean isNeedPrintDate() {
return false;
}
}
2. 钩子的设置(开关)
private void enterCompany() {
if (isNeedPrintDate()) {
System.out.println(new Date().toLocaleString() + "-->");
}
System.out.println(name + "进入公司");
}
/**
* 模板方法里可以可选的设置钩子(就是开关的意思把...)
*
* @return
*/
public boolean isNeedPrintDate() {
return false;
}












网友评论