模板模式就是定义操作中的算法骨架,将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些步骤。模板方法模式使得我们将一些不变的行为搬到超类中,去除子类重复的代码。这是一个很好的代码复用的平台。
下面是一个例子,Paper为试卷,Student为学生对试卷里问题的回答,test测试类
//试卷模板
public abstract class Paper {
public void questions1(){
System.out.println("1+1=?");
System.out.println("答案:"+Answer1());
}
public void questions2(){
System.out.println("1+2=?");
System.out.println("答案:"+Answer2());
}
public void questions3(){
System.out.println("1+3=?");
System.out.println("答案:"+Answer3());
}
public abstract String Answer1();
public abstract String Answer2();
public abstract String Answer3();
}
//学生1的回答
public class Student1 extends Paper {
@Override
public String Answer1() {
return "2";
}
@Override
public String Answer2() {
return "3";
}
@Override
public String Answer3() {
return "4";
}
}
//学生2的回答
public class Student2 extends Paper {
@Override
public String Answer1() {
return "3";
}
@Override
public String Answer2() {
return "3";
}
@Override
public String Answer3() {
return "7";
}
}
//test测试
public class test {
public static void main(String[] args) {
Paper s= new Student1();
s.questions1();
s.questions2();
s.questions3();
Paper s1= new Student2();
s1.questions1();
s1.questions2();
s1.questions3();
}
}
在这里试题都是一样的,但是学生的姓名和答案是不同的,因此我们可以将试题放到超类,答案则让每个学生自己写出。即如上代码让每个学生实现答案的接口,用多态进行接收。