使用场景:
当系统中同一个功能多出在开发,而该功能大部分代码是一样的,只有其中部分可能不同的时候。
模板方法的实现步骤:
把功能定义成一个所谓的模板方法,放在抽象类中,模板方法中只定义通用且能够确定的代码。
模板方法中不能决定的功能定义成抽象发发上具体子类实现,提高代码的复用性
案例
有一个中学生和小学生同时写一篇作文,要求每种类型的学生,第一段和最后一段内容必须一样,正文自己发挥,选择最优的面向对象方案进行设计
/**
* 模板方法设计
* @author ASUS
*
*/
public abstract class Student {
public final void write() {//加上final防止子类重写,模板方法是直接给子类使用的,重写了模板方法就失效了
//加上final更安全更专业
//正文第一段要求一样
System.out.println("我的家乡非常的美丽。");
writeMain();
//最后一段要求一样
System.out.println("我真的太爱我的家乡了!");
}
/**
* 正文部分,声明为抽象方法要求每个对象都是自己写正文部分
* @return
*/
public abstract String writeMain();
}