一 模板方法理解
实验代码地址:https://github.com/allhuo/deepin-java.git
本文实验代码:
模块名:chapter_001
包名:com.lizhangjun.part05
现在某电脑公司需要设计两个电脑模型给富士康代工量产,模型都能够开机,显示启动界面,进入桌面,关机操作,只是模型功能的具体实现不一样。
1.1 抽象电脑模型模板类
public abstract class AbstractComputerModel {
//启动
protected abstract void start();
//进入启动界面
protected abstract void show();
//展示电脑桌面
protected abstract void desktop();
//关闭电脑模型
protected abstract void shutdown();
public void templateRun(){
//step1: 启动电脑模型
start();
//step2: 进入启动界面
show();
//step3: 展示电脑桌面
desktop();
//step4: 关闭电脑模型
shutdown();
}
}
1.2 模型具体实现
public class DellComputerModel extends AbstractComputerModel{
@Override
protected void start() {
System.out.println("长按电源键启动!");
}
@Override
protected void show() {
System.out.println("显示戴尔logo");
}
@Override
protected void desktop() {
System.out.println("显示戴尔电脑自定义初始桌面");
}
@Override
protected void shutdown() {
System.out.println("长按电源键关机!");
}
}
public class MacComputerModel extends AbstractComputerModel{
@Override
protected void start() {
System.out.println("按一下电源键启动!");
}
@Override
protected void show() {
System.out.println("显示苹果logo");
}
@Override
protected void desktop() {
System.out.println("显示苹果电脑自定义初始桌面");
}
@Override
protected void shutdown() {
System.out.println("按一下电源键关机!");
}
}
1.3 电脑设计公司向富士康演示模型
public class Client {
public static void main(String[] args) {
AbstractComputerModel model1 = new DellComputerModel();
AbstractComputerModel model2 = new MacComputerModel();
//展示模型
model1.templateRun();
model2.templateRun();
}
}
二 模板方法总结
这里核心方法是templateRun(),它将一般方法按照一定的执行逻辑组织在一起,无需修改执行逻辑结构,即可实现执行逻辑的重定义。