本文共 1387 字,大约阅读时间需要 4 分钟。
当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的 实现可能不同时,我们通常考虑用模板方法模式来处理。
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
AbstractClass时抽象类,定义并且实现了一个模板方法,这个模板方法一般是一个具体方法,给出了一个顶级逻辑的框架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。
试卷都是一份, 学生交上的卷子只是答案不同。
定义试卷的问题以及回答等模板方法
package com.templatemethod;public class TestPaper { public void TestQuestion1(){ System.out.println("1+1=? A.1 B.2 C.3 D.4"); System.out.println("答案是:"+ this.Answer1()); } //留给子类重写,不同的学生试卷问题都一样,就是答案不同 public String Answer1(){ return ""; }}
package com.templatemethod;public class Student1 extends TestPaper{ @Override public String Answer1() { return "B"; }}
package com.templatemethod;public class Student2 extends TestPaper{ @Override public String Answer1() { return "A"; }}
package com.templatemethod;public class Client { public static void main(String[] args) { System.out.println("学生一的试卷:"); TestPaper student1=new Student1(); student1.TestQuestion1(); System.out.println("学生二的试卷:"); TestPaper student2=new Student2(); student2.TestQuestion1(); }}
转载地址:http://qpfdi.baihongyu.com/