Template Method 模板方法
目录
Template Method 模板方法
定义一个操作中的算法的骨架
,而将一些步骤
延迟到子类中。
模板方法使得子类可以不改变一个算法的结构
即可重定义该算法的某些特定步骤的细节
抽象模板类的方法分为两类:
- 基本方法(
primitive method
):由子类实现的方法,并且在模板方法被调用,客户端不关心这些基本方法,所以可以声明成 protected abstract - 模板方法(
template method
):可以有多个, 一般是具体方法,也就是骨架,实现对基本方法的调度
,完成固定的逻辑。一般声明为final以防止被覆写
模板方法模式需要开发抽象类和具体子类的程序员之间的协作。一个程序员负责给出一个算法的轮廓和骨架
,另一些程序员则负责给出这个算法的各个逻辑步骤
。
代表这些具体逻辑步骤的方法称做基本方法,而将这些基本方法汇总起来的方法叫做模板方法,这个设计模式的名字就是从此而来的。
优点
- 模板方法模式通过把
不变的行为
搬移到超类,去除了子类中的重复代码。 - 子类实现算法的某些细节,有助于算法的扩展。
- 通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开闭原则”。
适用场景:让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。
模板方法模式
抽象模板
public abstract class Template {
//【基本方法】:由子类实现,并且在模板方法中被调用的方法;客户端不关心这些基本方法,所以可以声明成 protected abstract
protected abstract void printName();
protected abstract void printAge();
protected void printDate() {
System.out.println(new SimpleDateFormat("yyyy.MM.dd HH-mm-ss").format(new Date()));
}
//【模板方法】:可以有多个, 一般是具体方法,也就是骨架,实现对基本方法的调度,完成固定的逻辑;一般声明为final以防止被覆写
public final void print() {
printName();
printAge();
printDate();
}
}
具体模板
public class TemplateConcrete extends Template {
@Override
protected void printName() {
System.out.println("包青天");
}
@Override
protected void printAge() {
System.out.println(27);
}
}
客户端使用演示
public class Test {
public static void main(String[] args) {
Template temp = new TemplateConcrete();
temp.print();
}
}
2016-10-31
本文来自博客园,作者:白乾涛,转载请注明原文链接:https://www.cnblogs.com/baiqiantao/p/6016353.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!