模板方法的定义
定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。
模板方法使得子类在不改变算法结构的情况下,重新定义某些算法的步骤。
一次性实现一个算法不变的部分,把可变的行为留给子类实现。
如果想拿高工资,那么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虚拟机 很多年工作经验 拥有行业的业务背景