愤怒中的小草

博客园 首页 新随笔 联系 订阅 管理

模板方法的定义

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

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

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

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

 

posted on 2019-01-05 17:27  愤怒中的小草  阅读(144)  评论(0编辑  收藏  举报