模板方法
public abstract class AbstractClass { public abstract void PrintOperation1(); public abstract void PrintOperation2();
public void TemplateMethod() { PrintOperation1(); PrintOperation2(); } } class ConcreateA : AbstractClass { public override void PrintOperation1() { //do something. } //... } class ConcreateB : AbstractClass { public override void PrintOperation1() { public override void PrintOperation1() { //do somethinng. } //... } } class Program { public static void Main() { AbstractClass c; c = new ConcreateA(); c.TemplateMethod(); } }
小DEMO:考卷,题目相同,仅仅只有答案不同 。
1.考卷类:
public class TestPaper { public string Name; public TestPaper(string name) { Console.WriteLine(name + "的答题卡."); } public void Question1() { Console.WriteLine("问题1:A,B,C,D. 答案:"+Answer1()); } public void Question2() { Console.WriteLine("问题2: A,B,C,D. 答案: "+ Answer2()); } public virtual string Answer1() { return ""; } public virtual string Answer2() { return ""; } }
2.答题类:
class StudentA : TestPaper { public StudentA(string name) : base(name) { } public override string Answer1() { //return base.Answer1(); return "a"; } public override string Answer2() { //return base.Answer2(); return "b"; } }
3.使用:
class Program { static void Main(string[] args) { TestPaper t1 =new StudentA("张三"); t1.Question1(); t1.Question2(); TestPaper t2 = new StudentB("李四"); t2.Question1(); t2.Question2(); } }