模板方法模式
使用环境:
当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时。通常考虑用模板方法模式处理。
尤其是遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但是有些步骤的实现可能不同。可以考虑用模板方法模式。
解释:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
抽象类,即模板类:
客户端调用:
优点:
通过把不变行为搬移到超类,去除子类中的重复代码。
提供了一个很好的代码复用平台。
当不变的合可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过使用模板方法模式,把这些行为搬移到单一的地方,这样就帮助子类拜托重复的不变行为的纠缠。
应用:
模板方法模式是很常用的模式,对继承和多态玩的好的人几乎都会在继承体系中多多少少用到它。
.NET或Java类库的设计中,通常都会利用模板方法模式提取类库中的公共行为到抽象类中。
例子:
试卷类:
客户端:
继承:
所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?