模板方法模式
模板方法模式
: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。
image.png一份试卷给两个人做,试卷题目是一样的,读题---解题,步骤是一样的,但答题的答案却是各有不同。
首先,我们要生成一份试卷,试卷里面对应的题目和答题顺序。
package template;
public abstract class AbstractClass {
public abstract void GiveAnswer1();
public abstract void GiveAnswer2();
public abstract void GiveAnswer3();
public void Question1()
{
System.out.println("第一题:请用\"笃定\"二字造句");
}
public void Question2()
{
System.out.println("第二题:请把 \"您 是把你放在心上的意思\" 翻译成英文");
}
public void Question3()
{
System.out.println("第三题:这题答对不加分,答错不答扣分");
}
public void PaperTest()
{
Question1();
GiveAnswer1();
Question2();
GiveAnswer2();
Question3();
GiveAnswer3();
}
}
学生A类 :只需继承AbstractClass类,然后重写答题的方法
package template;
public class AnswerClass extends AbstractClass{
@Override
public void GiveAnswer1() {
// TODO Auto-generated method stub
System.out.println("第一题太难不会");
}
@Override
public void GiveAnswer2() {
// TODO Auto-generated method stub
System.out.println("这题没做过,不会");
}
@Override
public void GiveAnswer3() {
// TODO Auto-generated method stub
System.out.println("这题我做过,送命题");
}
public static void main(String[] args) {
AbstractClass p=new AnswerClass();
p.PaperTest();
}
}
结果:
第一题:请用"笃定"二字造句
第一题太难不会
第二题:请把 "您 是把你放在心上的意思" 翻译成英文
这题没做过,不会
第三题:这题答对不加分,答错不答扣分
这题我做过,送命题
网友评论