设计模式(二) 模板方法
模板方法模式——在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。
优点: 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();
结果:
分类:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY