学习过程中的自己总结的一些知识点分享
应用知识点 继承 抽象
目录
注意:建议模板方法使用final关键字修饰,这样不能被子类重写
一、模板方法是什么?
模板方法就是当系统中出现同一个功能多处在开发,而该功能中大部分代码是一样的,只有其中部分可能不同的时候使用的一种抽象方法
二、模板方法模式解决了什么问题?
模板方法已经定义了通用结构,模板方法不能确定的部分定义成抽象方法,交给子类实现,因此,使用者只需要关心自己需要实现的功能即可。
三、使用步骤
- 定义一个抽象类
- 定义两个方法:一个是模板方法存放相同代码部分,一个是抽象方法具体的方法交给子类实现
- 子类继承抽象类,重写抽象方法
四、实例写作文案例
- 现在有两类学生,一类是中学生,一类是小学生,他们都要写一篇作文。
- 要求每种类型的学生,标题第一段和最后一段,内容必须一样。正文部分自己发挥。
- 请选择最优的面向对象方案进行设计
- 分析:
五、模板代码:
代码目录:
学生父类:
public abstract class Student {
public final void writeEssay(){
//作文上半部分
System.out.println("标题");
System.out.println("开头");
//利用抽象方法让子类分别实现不同的正文内容
writeMain();
//作文下半部分
System.out.println("结尾");
}
//抽象方法
public abstract void writeMain();
}
中学生子类:
public class MiddleStudent extends Student{
//重写声明
@Override
public void writeMain() {
System.out.println("中学生作文内容");
}
}
小学生子类:
public class litteStudent extends Student{
@Override
public void writeMain() {
System.out.println("小学生");
}
在此处运行:
public class Dome {
public static void main(String[] args) {
//new出一个小学生对象
litteStudent ls=new litteStudent();
//调用方法
ls.writeEssay();
System.out.println("========");
//new出一个中学生对象
MiddleStudent ms=new MiddleStudent();
//调用方法
ms.writeEssay();
}
}
运行结果
标题
开头
小学生
结尾
========
标题
开头
中学生
结尾
注意:建议模板方法使用final关键字修饰,这样不能被子类重写
六、总结
模板方法已经定义了通用结构,模板方法不能确定的部分定义成抽象方法,交给子类实现,因此,使用者只需要关心自己需要实现的功能即可。模板方法大大提高了代码的复用性。