模板方法模式 - 大学新生报到案例

Posted zh1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板方法模式 - 大学新生报到案例相关的知识,希望对你有一定的参考价值。

每年9月份,大学生开学季,社会主义的接班人们将进入向往的大学学习.....

大学报到有一个流程,咱们目前就简单分为两步,1.找学校,2.交学费

任何专业的学生都要执行找学校,但是每个专业的学生的学费价格有所不同

那我们就来实现大学报到。

 

一、报到第一步:找学校。

报到第一步找学校,这点就不用解释了。。

public abstract class Register {
    /**
     * 去学校
     */
    public final void goToSchool() {
        System.out.println("大学新生报到:先到学校...");
        pay();//找到学校后就要交学费。。
    }
    /**
     * 交学费
     */
    public abstract void pay();
}

此代码pay(交学费)为抽象函数,子类继承实现的时候,重写此函数。然后会在goToSchool中执行此函数。

 

二、报到第二步:交学费

报道完了,就要交学费了。。

此代码pay(交学费)为抽象函数,子类继承实现的时候,重写此函数。然后会在goToSchool中执行此函数。

此时,我们定义两个专业的大学生,分别为计算机专业和数学专业。

因为大学生报到,第一步找学校,肯定是公共的。

但是,第二步,交学费,就是按照专业的不同,而学费有差异。

首先定义一个计算机专业的学生

public class ITStudent extends Register {

    @Override
    public void pay() {
        // TODO Auto-generated method stub
        System.out.println("计算机专业学费1万");
    }

}

然后定义一个,数学专业的学生

 

public class MathStudent extends Register {

    @Override
    public void pay() {
        // TODO Auto-generated method stub
        System.out.println("数学专业学费5000");
    }

}

 

 

 

三、实现

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Register reg = new ITStudent();
        reg.goToSchool();

        Register reg1 = new MathStudent();
        reg1.goToSchool();
    }

}

 

四、总结

此设计模式较为简单,一句话总结为:在父类中定义方法(上例中的pay方法),根据不同的子类,延迟在子类中得到不同的实现。

注意,goToSchool要为final,因为这个方法,不允许被子类重写的。

以上是关于模板方法模式 - 大学新生报到案例的主要内容,如果未能解决你的问题,请参考以下文章

基于java web新生入学报到系统

荐|这里有一份来自IM商业智能社の新生攻略

ssm基于微信小程序的新生报到系统+uinapp+java+计算机毕业设计

父亲和女儿,成为同一所高校的新生!

励志 - 体重18公斤北航新生到校报到

励志 - 体重18公斤北航新生到校报到