您现在的位置:首页 > 教案模板 > 正文

学习笔记-设计理念之模板方式模式

2020-08-22 12:08 网络整理 教案网

备课笔记模板_高中英语备课教案模板_备课笔记 教案

一、概念

模板方式模式(Template Method Pattern)是指定义一个算法的骨架,并允许子类为一个或者多个流程提供推动。模板方式并且子类可以在不改变算法结构的状况下,重新定义算法的这些方法。

生活中有众多事情是有规律可循的备课笔记模板,比如做菜,基本步骤是放油->加菜->翻炒->出锅,不同的佐料做起来的菜不同,放不同的佐料味道也不同,模板方式模式就是把主体流程抽象出来备课笔记模板,把部分原则提供帮子类实现。

二、实现

高中英语备课教案模板_备课笔记模板_备课笔记 教案

需求:实现教师教书的过程,假设老师必须教物理,数学,英语。教书流程是教研(制作PPT)->讲课->布置作业->宣布下课。

话不多说,先上代码。

 1 public class ChineseCourse {
 2 
 3     public void createChineseCourse(){
 4         // 制作PPT
 5         makeChinesePpt();
 6         // 讲课
 7         haveChineseLessons();
 8         // 布置作业
 9         giveChineseHomework();
10         // 宣布下课
11         finishClass();
12     }
13 
14     private void finishClass() {
15         System.out.println("宣布下课");
16     }
17 
18     private void giveChineseHomework() {
19         System.out.println("布置语文作业");
20     }
21 
22     private void haveChineseLessons() {
23         System.out.println("上语文课");
24     }
25 
26     private void makeChinesePpt() {
27         System.out.println("制作语文PPT");
28     }
29 }

 1 public class MathCourse {
 2 
 3     public void createMathCourse(){
 4         // 制作PPT
 5         makeMathPpt();
 6         // 讲课
 7         haveMathLessons();
 8         // 布置作业
 9         giveMathHomework();
10         // 宣布下课
11         finishClass();
12     }
13 
14     private void finishClass() {
15         System.out.println("宣布下课");
16     }
17 
18     private void giveMathHomework() {
19         System.out.println("布置数学作业");
20     }
21 
22     private void haveMathLessons() {
23         System.out.println("上数学课");
24     }
25 
26     private void makeMathPpt() {
27         System.out.println("制作数学PPT");
28     }
29 }

高中英语备课教案模板_备课笔记模板_备课笔记 教案

 1 public class EnglishCourse {
 2 
 3     public void createEnglishCourse(){
 4         // 制作PPT
 5         makeEnglishPpt();
 6         // 讲课
 7         haveEnglishLessons();
 8         // 布置作业
 9         giveEnglishHomework();
10         // 宣布下课
11         finishClass();
12     }
13 
14     private void finishClass() {
15         System.out.println("宣布下课");
16     }
17 
18     private void giveEnglishHomework() {
19         System.out.println("布置英语作业");
20     }
21 
22     private void haveEnglishLessons() {
23         System.out.println("上英语课");
24     }
25 
26     private void makeEnglishPpt() {
27         System.out.println("制作英语PPT");
28     }
29 }

测试类

 1 public class TemplateTest {
 2 
 3     public static void main(String[] args) {
 4         ChineseCourse chineseCourse = new ChineseCourse();
 5         chineseCourse.createChineseCourse();
 6 
 7         EnglishCourse englishCourse = new EnglishCourse();
 8         englishCourse.createEnglishCourse();
 9 
10         MathCourse mathCourse = new MathCourse();
11         mathCourse.createMathCourse();
12     }
13 }

虽然基本业务用途可以推动,但是成为有追求的程序员们不难发现,教课的步骤基本一致,且个别步骤完全可以复用,由此,模板方式出现了。

高中英语备课教案模板_备课笔记模板_备课笔记 教案

首先定义模板类

 1 public abstract class CourseTemplate {
 2 
 3     public void createCourse(){
 4         // 制作PPT
 5         makePpt();
 6         // 讲课
 7         haveLessons();
 8         // 布置作业
 9         giveHomework();
10         // 宣布下课
11         finishClass();
12     }
13 
14     public abstract void makePpt();
15 
16     public abstract void haveLessons();
17 
18     public abstract void giveHomework();
19 
20     public void finishClass(){
21         System.out.println("宣布下课");
22     }
23 }

模板类定义了上课的主要步骤(备课(制作PPT)->讲课->布置作业->宣布下课)并且推动了个别通用办法(finishClass)。

下面开始改造相关课程

备课笔记 教案_高中英语备课教案模板_备课笔记模板

 1 public class ChineseCourse extends CourseTemplate {
 2 
 3     public void giveHomework() {
 4         System.out.println("布置语文作业");
 5     }
 6 
 7     public void haveLessons() {
 8         System.out.println("上语文课");
 9     }
10 
11     public void makePpt() {
12         System.out.println("制作语文PPT");
13     }
14 }

 1 public class EnglishCourse extends CourseTemplate{
 2 
 3     public void giveHomework() {
 4         System.out.println("布置英语作业");
 5     }
 6 
 7     public void haveLessons() {
 8         System.out.println("上英语课");
 9     }
10 
11     public void makePpt() {
12         System.out.println("制作英语PPT");
13     }
14 }

 1 public class MathCourse extends CourseTemplate{
 2 
 3     public void giveHomework() {
 4         System.out.println("布置数学作业");
 5     }
 6 
 7     public void haveLessons() {
 8         System.out.println("上数学课");
 9     }
10 
11     public void makePpt() {
12         System.out.println("制作数学PPT");
13     }
14 
15 }

测试类

public class TemplateTest {
    public static void main(String[] args) {
        CourseTemplate chineseCourse = new ChineseCourse();
        chineseCourse.createCourse();
        CourseTemplate mathCourse = new MathCourse();
        mathCourse.createCourse();
        CourseTemplate englishCourse = new EnglishCourse();
        englishCourse.createCourse();
    }
}

课程只需实现模板类的抽象原则,提高了代码复用性。