设计模式(二) 模板方法
生活随笔
收集整理的這篇文章主要介紹了
设计模式(二) 模板方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
模板方法模式——在一個(gè)抽象類中定義一個(gè)操作中的算法骨架,而將一些步驟延遲到子類中去實(shí)現(xiàn)(對(duì)應(yīng)于我們根據(jù)自己的情況向模板填充內(nèi)容)。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)前提下,重新定義算法的某些特定步驟,模板方法模式把不變行為搬到超類中,從而去除了子類中的重復(fù)代碼。
優(yōu)點(diǎn):?1、封裝不變部分,擴(kuò)展可變部分。 2、提取公共代碼,便于維護(hù)。 3、行為由父類控制,子類實(shí)現(xiàn)。
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(); 客戶端調(diào)用結(jié)果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/jasonbourne3/p/11096051.html
總結(jié)
以上是生活随笔為你收集整理的设计模式(二) 模板方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 读取split_Java报错系
- 下一篇: Asp.Net Core 第05局:读取