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、运行结果
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87539.html