Java入门——抽象类之模板方法模式案例

案例:

  • 现在有两类学生,一类是中学生,一类是小学生,它们都要写《我的爸爸》这篇作文。
  • 要求每种类型的学生,标题第一段和最后一段,内容必须一样。正文部分自由发挥。
  • 请选择最优的面向对象方案进行设计。

 1.创建一个父类Student,用于生成模板方法模式。

public abstract class Student {
    /**
     * 正式生成模板方法模式
     */
    //final的目的是为了让模板方法模式不被重写,模板方法模式是被子类直接调用的,一旦重写就失效了,加上final会让代码更专业和安全
    public final void write(){
        System.out.println("\t\t《我的爸爸》");
        //标题第一段
        System.out.println("您的爸爸是什么样子的,请您来说说:");

        //正文部分:每个子类都要写的,且每个子类写的情况也不一样,因此模板方法把正文部分定义成抽象方法再交给具体的子类完成
        System.out.println(writeMain());

        //结尾
        System.out.println("我的爸爸特别好。");
    }
    public abstract String writeMain();
}

2.分别创建小学生类StudentChild和中学生类StudentMiddle,然后直接套用父类中的模板方法模式使用。

//小学生
public class StudentChild extends Student {
    @Override
    public String writeMain() {
        return "小学生:我的爸爸是超级演英雄。";
    }
}
//中学生
public class StudentMiddle extends Student{
    @Override
    public String writeMain() {
        return "中学生:我的爸爸无所不能。";
    }
}

3.调用小学生和中学生类。

public class Demo {
    public static void main(String[] args) {
        //目标:理解模板方法模式的思想和使用步骤
        StudentMiddle s = new StudentMiddle();
        s.write();

        StudentChild s2 = new StudentChild();
        s2.write();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_61275790/article/details/129824004