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

一,咱們爲何須要模板設計模式?設計模式

在程序設計中,可能每一個對象都有共同的地方,而此時若是每一個對象定義一次,以下例子,每一個對象都寫Stay()方法,這樣在每一個類中都有不少相同的代碼,此時,咱們須要用到模板設計模式,來解決這個問題ide

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

三,以下例子:設計

複製代碼

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,這樣只有繼承時才能夠調用這個共用模板代碼對象

相關文章
相關標籤/搜索