模板方法

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();
        }
    }

 

posted on 2013-02-05 00:47  fishyk  阅读(87)  评论(0)    收藏  举报

导航