1、定义
模板模式:定义一个算法结构,而将一些步骤延迟到子类实现
写法
/**
* 电脑核心流程
*/
public interface IComputer {
//开启电源
void powerOn();
//检查硬件
void checkHardware();
//载入操作系统
void loadOS();
//登录
void login();
//是否登录
boolean isLogin();
//启动完整流程
void startUp();
}
/**
*
* 模板方法
* 封装不变部分,扩展可变部分。
* 提取公共部分代码,便于维护
*
*/
public abstract class AbstractComputer implements IComputer {
//下面是模板方法,定义为final,子类不能覆盖此方法
//固定策略不能轻易改变
@Override
public final void startUp() {
System.out.println( "--------开机 START--------" );
powerOn();
checkHardware();
loadOS();
if (isLogin()) {
login();
}
System.out.println( "-------- 开机 END --------" );
}
}
/**
* windows电脑
*/
public class WindowsComputer extends AbstractComputer {
@Override
public void powerOn() {
System.out.println("Windows电脑开启电源");
}
@Override
public void checkHardware() {
System.out.println("Windows电脑检查硬件");
}
@Override
public void loadOS() {
System.out.println("Windows电脑载入操作系统");
}
@Override
public void login() {
}
@Override
public boolean isLogin() {
return false;//返回false,不需登录
}
}
public class TestMain {
public static void main(String[] args){
AbstractComputer computer = new WindowsComputer();
computer.startUp();
}
}