C#设计模式之我见(四)Ⅰ

从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。

下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板方法”),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类控制。模版方法中的方法可以分为两大类:模版方法(Template Method)和基本方法(Primitive Method)。
现在分析一个简单的实例:
namespace TemplateMethod.DesignPattern
{
    using System;
   
 class Algorithm 
       {
           public void DoAlgorithm() 
               {
                   Console.WriteLine("In DoAlgorithm");
                   Console.WriteLine("In Algorithm - DoAlgoStep1");
                
   Console.WriteLine("In Algorithm - DoAlgoStep2");   
                
   DoAlgoStep3();
                   Console.WriteLine("In Algorithm - DoAlgoStep4");
                
   DoAlgoStep5();
              }
          
virtual public void DoAlgoStep3()
             {
                  Console.WriteLine("In Algorithm - DoAlgoStep3");  
             }
 
        virtual public void DoAlgoStep5()
            {
                 Console.WriteLine("In Algorithm - DoAlgoStep5");   
            }
       }

   class CustomAlgorithm : Algorithm
      {
          public override void DoAlgoStep3()
              {
                  Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");
              }
       
   public override void DoAlgoStep5()
              {
                  Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");
              }
      }

    public class Client
        {
            public static int Main(string[] args)
                {
                     CustomAlgorithm c = new CustomAlgorithm(); 
                  
   c.DoAlgorithm();
         
            return 0;
               }
        }
}

阅读全文
posted @ 2011-08-17 16:41  李明飞  阅读(405)  评论(0编辑  收藏  举报