首页 > 代码库 > 模板方法模式

模板方法模式

参考资料:《大话设计模式》

//模板方法模式--处理问题的步骤相同,但步骤的实现不同
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ds_templatemethod
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("第一种方法:");
            AbstractClass abs = new MethodAA();
            abs.TemplateMethod();

            Console.WriteLine("第二种方法:");
            AbstractClass abss = new MethodBB();
            abss.TemplateMethod();
        }
    }
    /// <summary>
    /// 模板类
    /// </summary>
    abstract class AbstractClass
    {
        protected abstract void MethodA();
        protected abstract void MethodB();
        /// <summary>
        /// 模板方法:给出了逻辑的骨架
        /// </summary>
        public void TemplateMethod()
        {
            Console.Write("第一步:排序--");
            MethodA();
            Console.Write("第二步:打印--");
            MethodB();
            Console.WriteLine("-------步骤完成");
        }
    }
    /// <summary>
    /// 第一种方法
    /// </summary>
    class MethodAA : AbstractClass
    {
        protected override void MethodA()
        {
            Console.WriteLine("冒泡排序");
        }
        protected override void MethodB()
        {
            Console.WriteLine("升序打印");
        }
    }
    /// <summary>
    /// 第二种方法
    /// </summary>
    class MethodBB : AbstractClass
    {
        protected override void MethodA()
        {
            Console.WriteLine("快速排序");
        }
        protected override void MethodB()
        {
            Console.WriteLine("降序打印");
        }
    }

}