C#設計模式:模板方法模式(Template Method)


一,我們為什么需要模板設計模式?

在程序設計中,可能每個對象都有共同的地方,而此時如果每個對象定義一次,如下例子,每個對象都寫Stay()方法,這樣在每個類中都有很多相同的代碼,此時,我們需要用到模板設計模式,來解決這個問題

二,模板設計模式思路:是把相同的部分抽象出來到抽象類中去定義,具體子類來繼承抽象類,並實現抽象類中的抽象方法,從而達到具體實現的不同部分,這個思路也正式模板方法的實現精髓所在

三,如下例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _13.模板方法模式
{
    //模板設計模式
    //在程序設計中,可能每個對象都有共同的地方,而此時如果每個對象定義一次,如下,每個對象都寫Stay方法,這樣在每個類中都有很多相同的代碼
    //此時,我們需要用到模板設計模式,來解決這個問題
    //模板設計模式思路:是把相同的部分抽象出來到抽象類中去定義,具體子類來繼承抽象類,並實現抽象類中的抽象方法,從而達到具體實現的不同部分,這個思路也正式模板方法的實現精髓所在
    class Program
    {
        static void Main(string[] args)
        {
            People p = new Chinese();
            People p2 = new English();
        }
    }
    public abstract class People
    {
        public People()
        {
            Stay();
            Console.WriteLine("我們是人類");
            Country();
            Say();
        }

        protected void Stay()
        {
            Console.WriteLine("我住在地球");
        }

        public abstract void Country();

        public abstract void Say();
    }
    public class Chinese : People
    {
        public override void Country()
        {
            Console.WriteLine("我是中國人");
        }
        public override void Say()
        {
            Console.WriteLine("我們說中文");
        }
    }
    public class English : People
    {
        public override void Country()
        {
            Console.WriteLine("We are English");
        }
        public override void Say()
        {
            Console.WriteLine("We speak English");
        }
    }
}

三,我們將共用定義為protected,這樣只有繼承時才可以調用這個共用模板代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM