方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。重定义操作通过覆写模版方法里面的抽象方法而实现。
去除子类中的重复代码。
方法模式提供了一个很好的代码复用平台。
方法模式处理。
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 19:27
-
@ProjectName: JavaBaseTest
*/
public class Client{
public static void main(String[] args) {
//A试卷
System.out.println("A试卷信息:");
PaperA a=new PaperA();
a.templateMethod();
//B试卷
System.out.println("B试卷信息:");
PaperB b=new PaperB();
b.templateMethod();
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 19:15
-
@ProjectName: JavaBaseTest
*/
public abstract class AbstractPaper {
//三个抽象行为,作为逻辑骨架的组合内容.
public abstract void primitiveOperation1();
public abstract void primitiveOperation2();
public abstract void primitiveOperation3();
//逻辑框架1,组合了1,2,3抽象行为
public void templateMethod(){
primitiveOperation1();
primitiveOperation2();
primitiveOperation3();
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 19:20
-
@ProjectName: JavaBaseTest
*/
public class PaperA extends AbstractPaper {
@Override
public void primitiveOperation1() {
System.out.println("第一题答案是:A");
}
@Override
public void primitiveOperation2() {
System.out.println("第二题答案是:B");
}
@Override
public void primitiveOperation3() {
System.out.println("第三题答案是:E");
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/7 19:26
-
@ProjectName: JavaBaseTest
*/
public class PaperB extends AbstractPaper {
@Override
public void primitiveOperation1() {
System.out.println("第一题答案是:B");
}
@Override
public void primitiveOperation2() {
System.out.println("第二题答案是:C");
}
@Override
public void primitiveOperation3() {
System.out.println("第三题答案是:D");
}
}