一,我們為什么需要模板設計模式?
在程序設計中,可能每個對象都有共同的地方,而此時如果每個對象定義一次,如下例子,每個對象都寫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,這樣只有繼承時才可以調用這個共用模板代碼
