最基本的模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public abstract class EverydayLife { public virtual void EatFood() { Console.WriteLine( "吃饭" ); } public abstract void DoWork(); public virtual void Sleep() { Console.WriteLine( "睡觉" ); } //模板方法,规定好执行顺序,子类可以不必重写EatFood()和Sleep(), //但每个人的工作不同,实现自己的DoWork() public void TempMethod() { EatFood(); DoWork(); Sleep(); } } public class MyEverydayLife : EverydayLife { public override void EatFood() { Console.WriteLine( "吃软饭" ); } public override void DoWork() { Console.WriteLine( "上班摸鱼" ); } public override void Sleep() { Console.WriteLine( "睡懒觉" ); } } |
1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
3.控制子类扩展。模板方法只在特定点调用“Hook”操作,这样就只允许在这些点进行扩展。
分类:
DesignMode(设计模式)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2021-07-06 sql删除所有主外键
2021-07-06 java读取properties配置文件
2021-07-06 java反射静态代理和动态代理
2017-07-06 MySql中循环的使用
2016-07-06 redis安装