模板方法的定义

定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。

模板方法使得子类在不改变算法结构的情况下,重新定义某些算法的步骤。

一次性实现一个算法不变的部分,把可变的行为留给子类实现。

java 设计模式之模板方法-LMLPHP

如果想拿高工资,那么java基础必会,设计模式和算法要精通。JVM是进阶的必选,在加上经验就可以拿到想要的工资。

代码实现如下

public abstract class AHighWage {
protected final void javaCourse(){
this.baseJava();
this.masterDesignPattern();
this.masterAlgorithm();
if (needKnowJVM()){
this.masterJVM();
}
this.otherKnow();
} final void baseJava(){
System.out.println("java基础必备");
} final void masterDesignPattern(){
System.out.println("精通java设计模式");
} final void masterAlgorithm(){
System.out.println("精通数据结构和算法");
} //钩子方法
protected Boolean needKnowJVM(){
return false;
} final void masterJVM(){
System.out.println("精通jvm虚拟机");
} abstract void otherKnow();
}

两个子类一个毕业生和一个老司机

public class Graduation extends AHighWage {
@Override
void otherKnow() {
System.out.println("有计算机四级证书");
}
}
public class OldDriver extends AHighWage {
private Boolean knowjvm = false; public OldDriver(Boolean bl){
this.knowjvm = bl;
}
@Override
void otherKnow() {
System.out.println("很多年工作经验");
System.out.println("拥有行业的业务背景");
} @Override
protected Boolean needKnowJVM(){
return this.knowjvm;
}
}

测试类

public class demo {
public static void main(String[] args){
AHighWage graduation = new Graduation();
graduation.javaCourse();
System.out.println("----------------------------");
AHighWage olddriver = new OldDriver(true);
olddriver.javaCourse();
}
}

打印如下

java基础必备
精通java设计模式
精通数据结构和算法
有计算机四级证书
----------------------------
java基础必备
精通java设计模式
精通数据结构和算法
精通jvm虚拟机
很多年工作经验
拥有行业的业务背景
05-04 09:08