问题描述
老师在黑板上抄作业,同学们在下面先抄作业,再做答案。经常有同学眼神不好,会把作业抄错。
但在考试时,就不会有这样情况,因为大家拿到的试卷都是一样的。这里考试试卷类似于模板,提取了相同部分。
代码实现
抽象试卷类
abstract class TestPaper
{
public void TestQuestion1()
{
Console.WriteLine("问题1");
Console.WriteLine("答案:" + Answer1());
}
public void TestQuestion2()
{
Console.WriteLine("问题2");
Console.WriteLine("答案:" + Answer2());
}
public void TestQuestion3()
{
Console.WriteLine("问题3");
Console.WriteLine("答案:" + Answer3());
}
protected abstract string Answer1();
protected abstract string Answer2();
protected abstract string Answer3();
}
学生甲抄试卷的具体类
class TestPaperA : TestPaper
{
protected override string Answer1()
{
return "A";
}
protected override string Answer2()
{
return "B";
}
protected override string Answer3()
{
return "C";
}
}
学生乙抄试卷的具体类
class TestPaperB : TestPaper
{
protected override string Answer1()
{
return "B";
}
protected override string Answer2()
{
return "C";
}
protected override string Answer3()
{
return "D";
}
}
客户端代码
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("学生甲的答案:");
TestPaper studentA = new TestPaperA();
studentA.TestQuestion1();
studentA.TestQuestion2();
studentA.TestQuestion3();
Console.WriteLine("学生乙的答案:");
TestPaper studentB = new TestPaperB();
studentB.TestQuestion1();
studentB.TestQuestion2();
studentB.TestQuestion3();
}
}
执行结果:
学生甲的答案:
问题1
答案:A
问题2
答案:B
问题3
答案:C
学生乙的答案:
问题1
答案:B
问题2
答案:C
问题3
答案:D