1. 程式人生 > >模板方法模式

模板方法模式

abstract cli args rtu pan virtual rri spi cab

// 客戶端調用
    class Client
    {
        static void Main(string[] args)
        {
            // 創建一個菠菜實例並調用模板方法
            Spinach spinach = new Spinach();
            spinach.CookVegetabel();
            Console.Read();
        }
    }

    public abstract class Vegetabel
    {
        // 模板方法,不要把模版方法定義為Virtual或abstract方法,避免被子類重寫,防止更改流程的執行順序
public void CookVegetabel() { Console.WriteLine("抄蔬菜的一般做法"); this.pourOil(); this.HeatOil(); this.pourVegetable(); this.stir_fry(); } // 第一步倒油 public void pourOil() { Console.WriteLine(
"倒油"); } // 把油燒熱 public void HeatOil() { Console.WriteLine("把油燒熱"); } // 油熱了之後倒蔬菜下去,具體哪種蔬菜由子類決定 public abstract void pourVegetable(); // 開發翻炒蔬菜 public void stir_fry() { Console.WriteLine("翻炒"); } }
// 菠菜 public class Spinach : Vegetabel { public override void pourVegetable() { Console.WriteLine("倒菠菜進鍋中"); } } // 大白菜 public class ChineseCabbage : Vegetabel { public override void pourVegetable() { Console.WriteLine("倒大白菜進鍋中"); } }

模板方法模式