模板模式(templete)

模板模式(templete)

模板模式定义

模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型, 然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻辑还是在抽象类中完成的

举例

本猿的女盆友是一个高中老师。以她上一节课的周期举例:
她要线预习大纲、梳理讲课流程、做教案准备例题、开始上课、讲完一阶段给学生答疑、布置作业、批改作业。
由于要根据讲课的进度选择是否留作业,所以留作业和 批改作业有一些变数,所以要设置一个钩子,方便外部的调用

代码


/**
 * 模板模式就是: ,模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型,
 * 然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻辑还是在抽象类中完成的  。
 *
 */

//逻辑模板
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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值