1 计算机正常开启模版 (模版方法隐藏了具体的执行流程)
/**
* 抽象的Computer
*/
public class AbstractComputer {
protected void powerOn(){
Log.i("***","开启电源");
}
protected void checkHardware(){
Log.i("***","检查硬盘");
}
protected void loadOS(){
Log.i("***","载入操作系统");
}
protected void login(){
Log.i("***","小白计算机,直接进入系统");
}
//final防止算法框架被覆盖
public final void startUp(){
Log.i("***","开机-start");
powerOn();
checkHardware();
loadOS();
login();
Log.i("***","开机-end");
}
}
2 程序员计算机
/**
* 程序员用计算机
*/
public class CoderComputer extends AbstractComputer{
@Override
protected void login() {
Log.i("***","只需要进行密码验证就ok");
}
}
3 军用计算机
/**
* 军用计算机
*/
public class MilitaryComputer extends AbstractComputer {
@Override
protected void checkHardware() {
super.checkHardware();
Log.i("***","检车硬件防火墙");
}
@Override
protected void login() {
Log.i("***","进行指纹识别");
}
}
4 使用
/**
* 使用
*/
public class User {
public void use(){
AbstractComputer computer = new CoderComputer();
computer.startUp();
computer = new MilitaryComputer();
computer.startUp();
}
/*
* Log.i("***","开机-start");
* Log.i("***","开启电源");
* Log.i("***","检查硬盘");
* Log.i("***","载入操作系统");
* Log.i("***","只需要进行密码验证就ok");
* Log.i("***","开机-end");
*
* Log.i("***","开机-start");
* Log.i("***","开启电源");
* Log.i("***","检查硬盘");
* Log.i("***","检车硬件防火墙");
* Log.i("***","载入操作系统");
* Log.i("***","进行指纹识别");
* Log.i("***","开机-end");
*/
}