模板方法模式结构图:
例子:
1、定义模板方法类
/** * AbastractClass模板方法 */ public abstract class Question { //问题1 public void questionOne(){ System.out.println("问题1:1+1=?"); System.out.println("答案是:"+this.answerOne()); } //问题2 public void questionTwo(){ System.out.println("问题2:2+2=?"); System.out.println("答案是:"+this.answerTwo()); } //问题1的答案,抽象方法,具体实现交给子类 public abstract String answerOne(); //问题2的答案,抽象方法,具体实现交给子类 public abstract String answerTwo(); }2、具体实现类 /** * ConcreteClass */ public class AnswerOne extends Question{ public String answerOne() { return "2"; } public String answerTwo() { return "4"; } } public class AnswerTwo extends Question{ public String answerOne() { return "2"; } public String answerTwo() { return "4"; } } 3.测试 public class Test { public static void main(String[] args) { System.out.println("--------答卷1的内容--------"); Question questionOne=new AnswerOne(); questionOne.questionOne(); questionOne.questionTwo(); System.out.println("--------答卷2的内容--------"); Question questionTwo=new AnswerTwo(); questionTwo.questionOne(); questionTwo.questionTwo(); } }
输出:
--------答卷1的内容-------- 问题1:1+1=? 答案是:2 问题2:2+2=? 答案是:4 --------答卷2的内容-------- 问题1:1+1=? 答案是:2 问题2:2+2=? 答案是:4 来自:大话设计模式