设计模式(二) 模板方法
生活随笔
收集整理的這篇文章主要介紹了
设计模式(二) 模板方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模板方法模式——在一個抽象類中定義一個操作中的算法骨架,而將一些步驟延遲到子類中去實現(對應于我們根據自己的情況向模板填充內容)。模板方法使得子類可以不改變一個算法的結構前提下,重新定義算法的某些特定步驟,模板方法模式把不變行為搬到超類中,從而去除了子類中的重復代碼。
優點:?1、封裝不變部分,擴展可變部分。 2、提取公共代碼,便于維護。 3、行為由父類控制,子類實現。
1 /// <summary> 2 /// 炒菜基類 3 /// </summary> 4 public abstract class CookAbstract 5 { 6 /// <summary> 7 /// 模板方法 8 /// </summary> 9 public void Cook() 10 { 11 AddOil(); 12 AddVegetables(); 13 AddSalt(); 14 } 15 16 /// <summary> 17 /// 加油 18 /// </summary> 19 public virtual void AddOil() 20 { 21 Console.WriteLine("加油"); 22 } 23 /// <summary> 24 /// 加蔬菜 25 /// </summary> 26 public abstract void AddVegetables(); 27 /// <summary> 28 /// 加鹽 29 /// </summary> 30 public virtual void AddSalt() 31 { 32 Console.WriteLine("加鹽"); 33 } 34 } 炒菜基類 1 /// <summary> 2 /// 炒土豆 3 /// </summary> 4 public class CookPotato : CookAbstract 5 { 6 public override void AddVegetables() 7 { 8 Console.WriteLine("加土豆"); 9 } 10 } 11 /// <summary> 12 /// 炒白菜 13 /// </summary> 14 public class CookCabbage : CookAbstract 15 { 16 public override void AddOil() 17 { 18 Console.WriteLine("加花生油"); 19 } 20 public override void AddVegetables() 21 { 22 Console.WriteLine("加白菜"); 23 } 24 } 炒菜子類 1 CookAbstract potato = new CookPotato(); 2 CookAbstract cabbage = new CookCabbage(); 3 4 potato.Cook(); 5 Console.WriteLine(); 6 cabbage.Cook(); 客戶端調用結果:
?
轉載于:https://www.cnblogs.com/jasonbourne3/p/11096051.html
總結
以上是生活随笔為你收集整理的设计模式(二) 模板方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 读取split_Java报错系
- 下一篇: Asp.Net Core 第05局:读取