概述
目录
1.模板方法设计模式的概念
2.模板方法设计模式的结构图
3.练习示例:
4.总结:
1.模板方法设计模式的概念
2.模板方法设计模式的结构图
3.练习示例:
试卷类:
/**
*试卷类
*/
public class TestPaper {
public void testQuestion1(){
System.out.println("问题一");
System.out.println(answer1());
}
public void testQuestion2(){
System.out.println("问题二");
System.out.println(answer2());
}
public void testQuestion3(){
System.out.println("问题三");
System.out.println(answer3());
}
protected String answer1(){
return "";
}
protected String answer2(){
return "";
}
protected String answer3(){
return "";
}
}
学生A答的试卷:
/**
* 学生A答的试卷
*/
public class TestPaperA extends TestPaper{
@Override
protected String answer1() {
return "我是学生A,第一题的答案为:答案A";
}
@Override
protected String answer2() {
return "我是学生A,第二题的答案为:答案B";
}
@Override
protected String answer3() {
return "我是学生A,第三题的答案为:答案C";
}
}
学生B答的试卷:
/**
* 学生B答的试卷
*/
public class TestPaperB extends TestPaper{
@Override
protected String answer1() {
return "我是学生B,第一题的答案为:答案A";
}
@Override
protected String answer2() {
return "我是学生B,第二题的答案为:答案B";
}
@Override
protected String answer3() {
return "我是学生B,第三题的答案为:答案C";
}
}
测试类:
public class Test {
public static void main(String[] args) {
TestPaper testPaperA = new TestPaperA();
testPaperA.testQuestion1();
testPaperA.testQuestion2();
testPaperA.testQuestion3();
System.out.println("----------------");
TestPaper testPaperB = new TestPaperB();
testPaperB.testQuestion1();
testPaperB.testQuestion2();
testPaperB.testQuestion3();
}
}
控制台:
观察这个例子的特点不难发现,试卷类的某些特定,易变的步骤用了一个虚方法(answer)来代替了,而让其子类来重写了这个虚方法,但是调用的时候并不是调用重写的虚方法,而是调用的模板方法,模板方法里面自然会去调用子类重写的虚方法。
4.总结:
模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
最后
以上就是迷人爆米花为你收集整理的设计模式之模板方法模式的全部内容,希望文章能够帮你解决设计模式之模板方法模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复