範本方法-Template Method

設計模式系列

範本方法模式:定義一個操作中的演算法骨架,將一些步驟延遲到子類別中。

1.此模式可以把不變行為移轉到Super Class,並去掉子類別的重複Code來呈現出它的好處
2.一旦遇到不變和可變的行為在方法中的子類別混合再一起時候,不變行為在子類別重複出現
   透過範本方法搬移到單一地方,可幫助子類別擺脫重複不變行為問題。

using System;
using System.Collections.Generic;

namespace ConsoleApp6
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            AbstractClass aA = new ConcreteClassA();
            aA.TemplateMethod();
            AbstractClass bB = new ConcreteClassB();
            bB.TemplateMethod();
            Console.ReadKey();
        }
    }

    abstract class AbstractClass
    {
        public abstract void PrimitiveOperation1();
        public abstract void PrimitiveOperation2();

        public void TemplateMethod()
        {
            PrimitiveOperation1();
            PrimitiveOperation2();
            Console.WriteLine("");
        }
    }
    class ConcreteClassA : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("ConcreteClassA.PrimitiveOperation1");
        }

        public override void PrimitiveOperation2()
        {
            Console.WriteLine("ConcreteClassA.PrimitiveOperation2");
        }
    }
    class ConcreteClassB:AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("ConcreteClassB.PrimitiveOperation1");
        }

        public override void PrimitiveOperation2()
        {
            Console.WriteLine("ConcreteClassB.PrimitiveOperation2");
        }
    }
 

}

 

元哥的筆記