模板方法模式
阿新 • • 發佈:2017-05-17
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("倒大白菜進鍋中"); } }
模板方法模式