类图
模板方法就是固定了一套流程。第一步该做什么,第二步该做什么。就像早上先起床,在吃饭,再上班一样。
代码部分:
/**
*抽象的早上生活
*/
public abstract class MorningLife {
/**
* 起床
*/
protected void getUp(){
System.out.println("掀开被子,睁开眼睛");
}
/**
* 吃早餐
*/
protected void eatBreakfast(){
System.out.println("吃豆浆,喝着油条");
}
/**
* 上班
*/
protected void goToWork(){
System.out.println("高高兴兴上班去了");
}
protected final void newDayBegin(){
getUp();
eatBreakfast();
goToWork();
}
}
因为顺序不可改变,所以方法newDayBegin()用final修饰。
/**
* 屌丝的早上生活
*/
public class ShitBoy extends MorningLife {
protected void getUp() {
System.out.println("先去上了趟厕所,然后起来了");
}
protected void goToWork() {
System.out.println("挤着地铁 在劲松 国贸快挤出屎了.一直坐到五道口");
}
}
/**
*高富帅
*/
public class RichAndSmartBoy extends MorningLife {
protected void getUp() {
System.out.println("先跟亲爱的么么哒,然后在。。。最后起床");
}
protected void eatBreakfast() {
System.out.println("蓝翔毕业的学员亲自做了一碗麻辣烫");
}
protected void goToWork() {
System.out.println("开迈巴赫去上班");
}
}
public class Client {
public static void main(String[] args) {
MorningLife shitBoy = new ShitBoy();
System.out.println("屌丝的美好一天开始了================");
shitBoy.newDayBegin();
MorningLife richStartBoy = new RichAndSmartBoy();
System.out.println("高富帅的美好一天开始了================");
richStartBoy.newDayBegin();
}
}