设计模式之模板方法模式-创新互联
通过AB卷来简单梳理模板方法模式
网站标题:设计模式之模板方法模式-创新互联
URL链接:http://azwzsj.com/article/dgehpe.html
学生时代考试时,经常涉及到AB卷,假如现在需要出两套试卷,试题及答案有差异但不大,这个时候该如何设计呢?
我们可以用模板方法模式来考虑这个问题。
首先定义一个试卷基类,方便真实的试卷来继承公用的部分
public class TestPaper {public void TestQuestion1(){System.out.println("问题1");
System.out.println("答案1:"+Answer1());
}
protected String Answer1(){return "";
}
public void TestQuestion2(){System.out.println("问题2");
System.out.println("答案2:"+Answer2());
}
protected String Answer2(){return "";
}
public void TestQuestion3(){System.out.println("问题3");
System.out.println("答案3:"+Answer3());
}
protected String Answer3(){return "";
}
}
定义具体的实现类
public class TestPaperA extends TestPaper{@Override
public String Answer1(){return "a";
}
@Override
public String Answer2(){return "b";
}
@Override
public String Answer3(){return "c";
}
}
public class TestPaperB extends TestPaper{@Override
public String Answer1(){return "d";
}
@Override
public String Answer2(){return "e";
}
@Override
public String Answer3(){return "f";
}
}
定义业务方法看在具体业务逻辑中如何使用
public class TemplateMethod {public static void main(String[] args) {//模板方法模式
func1();
}
public static void func1(){System.out.println("A试卷:");
TestPaper paperA = new TestPaperA();
paperA.TestQuestion1();
paperA.TestQuestion2();
paperA.TestQuestion3();
System.out.println("B试卷:");
TestPaper paperB = new TestPaperB();
paperB.TestQuestion1();
paperB.TestQuestion2();
paperB.TestQuestion3();
}
}
执行结果A试卷:
问题1
答案1:a
问题2
答案2:b
问题3
答案3:c
B试卷:
问题1
答案1:d
问题2
答案2:e
问题3
答案3:f
结果分析模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
https://xmlrambo.github.io/
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:设计模式之模板方法模式-创新互联
URL链接:http://azwzsj.com/article/dgehpe.html