1、概述
什么是模板方法设计模式?
在模板类的模板方法当中定义核心算法骨架,具体的实现步骤可以延迟到子类当中完成。
模板类通常是一个抽象类,模板类当中的模板方法定义核心算法,这个方法通常是final的(但也可以不是final的)
使用final可以保证子类无法覆盖模板方法的核心算法
模板类当中的抽象方法就是不确定实现的方法,这个不确定怎么实现的事儿交给子类去做。
2、示例代码
①Person.java(模板类)
//Person就是模板方法设计模式当中的模板类 //day方法就是模板方法设计模式当中的模板方法 public abstract class Person{ //添加了final之后,此方法不能被覆盖,这样核心的算法也可以得到保护 //模板方法定义核心的算法骨架,具体的实现步骤可以延迟到子类当中去实现 //核心算法一方面是得到了保护,不能被改变,另一方面就是算法得到了重复使用 //另一方面是的得到了复用,以为算法中某些步骤的代码是固定的。这些固定的代码不会随着子类的变化而变化 //这一部分代码可以写到模板类当中 public final void day(){ qiChuang(); xiShu(); chiZaoFang(); doSome(); shuiJiao(); } public void qiChuang(){ System.out.println("起床"); } public void xiShu(){ System.out.println("洗漱"); } public void chiZaoFang(){ System.out.println("吃早饭"); } public abstract void doSome(); public void shuiJiao(){ System.out.println("睡觉"); } }
②Student.java
public class Student extends Person{ @Override public void doSome(){ System.out.println("学生去上学!"); } }
③Teacher.java
public class Teacher extends Person{ @Override public void doSome(){ System.out.println("老师去上课!"); } }
④Test.java(测试类)
public class Test{ public static void main(String[] args){ Student s = new Student(); s.day(); System.out.println("====================================="); Teacher t = new Teacher(); t.day(); } }
3、运行结果