当各个子类中存在大量相同的代码,然而也存在部分不同的代码时,这时候应该考虑把相同的代码抽取到父类成为一个模板,然后把每个子类各自不同的代码在父类中表示为抽象方法,在子类重写
一、下面请看一个例子:有两份相同的试卷,小明和小王进行答题
抽象父类
public abstract class Paper {
public abstract String Answer1();
public abstract String Answer2();
public void Question1() {
System.out.println("1+1="+Answer1());
}
public void Question2() {
System.out.println("2+2="+Answer2());
}
}
试卷有1和2两个问题,后面跟着答案
小明的试卷
public class ManswerPaper extends Paper{
@Override
public String Answer1() {
return "2";
}
@Override
public String Answer2() {
return "4";
}
}
小王的试卷
public class WanswerPaper extends Paper{
@Override
public String Answer1() {
return "1";
}
@Override
public String Answer2() {
return "2";
}
}
测试类
public class Test {
public static void main(String[] args) {
System.out.println("小明的试卷:");
Paper mPaper=new ManswerPaper();
mPaper.Question1();
mPaper.Question2();
System.out.println("小王的试卷:");
Paper wPaper=new WanswerPaper();
wPaper.Question1();
wPaper.Question2();
}
}
输出如下
模板方法的使用避免了题目这个相同的代码在每个子类中都出现,非常的简洁