模板模式的基本定义是:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可用改变一个算法的结构,即可重定义该算法发 某些特定步骤。
示例代码如下:
1, 在抽象的父类中定义一系列的特定步骤:其中startUp方法定义为final,使子类不能重写
package modelpattern;
public abstract class AbstractComputer {
protected void powerOn() {
System.out.println("开启电源");
}
protected void checkHardWare() {
System.out.println("硬件检查");
}
protected void loadOS() {
System.out.println("载入操作系统");
}
protected void login() {
System.out.println("通过用户验证");
}
public final void startUp() {
System.out.println("--------开机 START----------");
powerOn();
checkHardWare();
loadOS();
login();
System.out.println("--------关机 END----------");
}
}
2 定义实现的实体类:在子类中,可用重写特定步骤
package modelpattern;
public class CoderComputer extends AbstractComputer{
@Override
protected void login() {
System.out.println("程序员用账号和密码登录");
}
}
以及:
package modelpattern;
public class MilitaryComputer extends AbstractComputer{
@Override
protected void checkHardWare() {
super.checkHardWare();
System.out.println("检查硬件防火墙");
}
@Override
protected void login() {
System.out.println("进行指纹识别用户验证");
}
}
3, 在测试类中运行结果:
package modelpattern;
public class Test {
public static void main(String[] args) {
AbstractComputer computer = new CoderComputer();
computer.startUp();
computer = new MilitaryComputer();
computer.startUp();
}
}
4 查看输出的结果:
--------开机 START----------
开启电源
硬件检查
载入操作系统
程序员用账号和密码登录
--------关机 END----------
--------开机 START----------
开启电源
硬件检查
检查硬件防火墙
载入操作系统
进行指纹识别用户验证
--------关机 END----------