关于C# 设计模式 TemplateMethod 模板方法模式

关于C# 设计模式 TemplateMethod 模板方法模式

using System;
using System.Collections.Generic;
using System.Text;
///Template Method(模板方法)模式定义一个操作中的算法的骨架,将具体的处理细节交给子类具体实现。
///add by jzh 2007-04-26
namespace DesignPattern
{
/// <summary>
/// 抽象模版(AbstractClass)角色
/// 定义了一个或多个抽象操作,以便让子类实现。
/// 这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
/// </summary>
class Algorithm
{
public void DoAlgorithm()
{
Console.WriteLine("In DoAlgorithm");
Console.WriteLine("In Algorithm - 步骤1");
Console.WriteLine("In Algorithm - 步骤2");
DoAlgoStep3();
Console.WriteLine("In Algorithm -步骤4");
DoAlgoStep5();
}
virtual public void DoAlgoStep3()
{
Console.WriteLine("In Algorithm - 步骤3");
}
virtual public void DoAlgoStep5()
{
Console.WriteLine("In Algorithm - 步骤5");
}
}
/// <summary>
/// 具体模版(ConcreteClass)
/// 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。
/// </summary>
class CustomAlgorithm : Algorithm
{
public override void DoAlgoStep3()
{
Console.WriteLine("In CustomAlgorithm - 步骤3");
}
public override void DoAlgoStep5()
{
Console.WriteLine("In CustomAlgorithm - 步骤5");
}
}
public class Client
{
public static void Main(string[] args)
{
CustomAlgorithm c = new CustomAlgorithm();
c.DoAlgorithm();
Console.ReadLine();
}
}
}
using System; using System.Collections.Generic; using System.Text; ///Template Method(模板方法)模式定义一个操作中的算法的骨架,将具体的处理细节交给子类具体实现。 ///add by jzh 2007-04-26 namespace DesignPattern { /// <summary> /// 抽象模版(AbstractClass)角色 /// 定义了一个或多个抽象操作,以便让子类实现。 /// 这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 /// </summary> class Algorithm { public void DoAlgorithm() { Console.WriteLine("In DoAlgorithm"); Console.WriteLine("In Algorithm - 步骤1"); Console.WriteLine("In Algorithm - 步骤2"); DoAlgoStep3(); Console.WriteLine("In Algorithm -步骤4"); DoAlgoStep5(); } virtual public void DoAlgoStep3() { Console.WriteLine("In Algorithm - 步骤3"); } virtual public void DoAlgoStep5() { Console.WriteLine("In Algorithm - 步骤5"); } } /// <summary> /// 具体模版(ConcreteClass) /// 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。 /// </summary> class CustomAlgorithm : Algorithm { public override void DoAlgoStep3() { Console.WriteLine("In CustomAlgorithm - 步骤3"); } public override void DoAlgoStep5() { Console.WriteLine("In CustomAlgorithm - 步骤5"); } } public class Client { public static void Main(string[] args) { CustomAlgorithm c = new CustomAlgorithm(); c.DoAlgorithm(); Console.ReadLine(); } } }
using System;
using System.Collections.Generic;
using System.Text;

///Template Method(模板方法)模式定义一个操作中的算法的骨架,将具体的处理细节交给子类具体实现。
///add by jzh 2007-04-26
namespace DesignPattern
{
    /// <summary>
    /// 抽象模版(AbstractClass)角色
    /// 定义了一个或多个抽象操作,以便让子类实现。
    /// 这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
    /// </summary>
    class Algorithm
    {
        public void DoAlgorithm()
        {
            Console.WriteLine("In DoAlgorithm");

            Console.WriteLine("In Algorithm - 步骤1");

            Console.WriteLine("In Algorithm - 步骤2");

            DoAlgoStep3();

            Console.WriteLine("In Algorithm -步骤4");

            DoAlgoStep5();
        }

        virtual public void DoAlgoStep3()
        {
            Console.WriteLine("In Algorithm - 步骤3");
        }

        virtual public void DoAlgoStep5()
        {
            Console.WriteLine("In Algorithm - 步骤5");
        }
    }

    /// <summary>
    /// 具体模版(ConcreteClass)
    /// 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。
    /// </summary>
    class CustomAlgorithm : Algorithm
    {
        public override void DoAlgoStep3()
        {
            Console.WriteLine("In CustomAlgorithm - 步骤3");
        }

        public override void DoAlgoStep5()
        {
            Console.WriteLine("In CustomAlgorithm - 步骤5");
        }
    }

    public class Client
    {
        public static void Main(string[] args)
        {
            CustomAlgorithm c = new CustomAlgorithm();

            c.DoAlgorithm();

            Console.ReadLine();
        }
    }
}

 

发表回复

您的电子邮箱地址不会被公开。