模板方法的定义

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

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

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

如果想拿高工资,那么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虚拟机
很多年工作经验
拥有行业的业务背景

最新文章

  1. HideFlag隐藏标识
  2. Spark入门实战系列--9.Spark图计算GraphX介绍及实例
  3. 大数据批量插入数据库使用(SqlBulkCopy )效率更高
  4. centos一键优化脚本
  5. C类型
  6. CSDN markdown 编辑 三 基本语法
  7. java初级开发程序员(第三单元)
  8. hdu5651 xiaoxin juju needs help(逆元)
  9. selenium-webdriver的二次封装(十)
  10. react-native 配置 在mac 上找不到.npmrc
  11. vue2的缓存问题(非原创)
  12. 谈谈我对Manacher算法的理解
  13. Objecttive-C各种问题
  14. CSS高级布局
  15. 64_q2
  16. 秒懂算法1——冒泡排序,及一种小改进(C#实现)
  17. 关于IE8版本提示“不支持‘trim’此属性或者方法”的解决办法。转摘雨网络
  18. 【架构】Twitter高性能RPC框架Finagle介绍
  19. php创建对象。真!变!态!
  20. apache 一个站点配置多个域名

热门文章

  1. java Spring 各版本jar包下载地址
  2. Mysql锁原理浅谈
  3. Java集合之LinkedHashMap源码分析
  4. ORM作业
  5. Python 函数的作用域
  6. 通过webpack2从0开始配置自己的vue项目 1
  7. 使用bootstrap的JS插件实现模态框效果
  8. win7 x64 +vs2015 + cmake3.10.3编译opencv-3.4.1+opencv_contrib-3.4.1源码,并进行配置
  9. OSGI企业应用开发(十四)整合Spring、Mybatis、Spring MVC
  10. Linux 学习笔记之超详细基础linux命令 Part 13