模板模式定义
模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型, 然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻辑还是在抽象类中完成的
举例
代码
/ * 模板模式就是: ,模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型, * 然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻辑还是在抽象类中完成的 。 * */ //逻辑模板 public abstract class TeacherCourse { //因为逻辑流程已经定下,所以不能 被子类重写,所以要用final修饰 public final void createCourse() { //预习大纲 this.prepareSllabus(); //授课思路梳理 this.thinking(); //准备例题 this.demo() ; //给学生讲课 this.teach(); //给学生答疑 this.answer(); //留作业不是一个必然的过程,若果课程全部讲完,需要留作业,但是没有讲完就不需要留作业, //所以要设置一个钩子方法,以方便与子类去微调 if(this.hasHomework()) { //给学生留作业 this.homework(); //批改作业 this.correct(); } System.out.println(" 一个课程的生命周期完成 "); } final void homework() { System.out.println("给学生留课后作业"); } final void correct() { System.out.println("给学生批改作业"); } protected boolean hasHomework() { return false; } final void answer() { System.out.println("给学生答疑"); } final void teach() { System.out.println("给学生上课"); } final void demo() { System.out.println("准备例题"); } final void thinking() { System.out.println("授课思路梳理"); } final void prepareSllabus(){ System.out.println("预习大纲"); } }
//上个不留作业的课程
//上第一节课 集合 public class ListCourse extends TeacherCourse { private boolean homework = false; public ListCourse(boolean homework) { this.homework = homework; } @Override protected boolean hasHomework() { return this.homework; } }
//测试
public class TemplateTest { public static void main(String[] args) { TeacherCourse course = new ListCourse(true); course.createCourse(); } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220059.html原文链接:https://javaforall.net
