模板设计模式 命名 xxxTemplate (Template 是模板的意思)
把抽象类整理看作为一个模板,模板中不能决定的东西定义成抽象方法,让使用模板的类(继承抽象类的类)去重写抽象方法实现需求
优势:模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可
写法:有一个模板类,模板中固定的方法,使用final修饰起来,允许更改的东西定义为抽象方法,然后让继承模板的类去指定要修改的内容;因为抽象方法只能在抽象类中,所以模板类也是抽象类
package test;
//这是一个作文模板,有一个write方法,提供了开头,正文,和结尾
//因为正文不确定,所以提供了一个抽象方法,让他的实现类去实现它
//并且,因为write是重要的方法,不希望别人去重写,所以加上一个final修饰
//也就是说,模板中固定的东西,使用final修饰起来,允许更改的东西定义为抽象方法,然后让继承模板的类去指定要修改的内容;
public abstract class CompositionTemplateTest {
public final void write(){
System.out.println("我的爸爸");
body();
System.out.println("这就是我的爸爸");
}
public abstract void body();
}
//继承模板类并重写body()方法
class Tom extends CompositionTemplateTest{
@Override
public void body() {
System.out.println("我很爱他");
}
}
//执行测试
class ATest{
public static void main(String[] args) {
Tom tom = new Tom();
tom.write();
}
}