设计模式-行为型-模板模式
1 定义
- 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中去。
- 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2 UML
3 代码实现
抽象模板类
public abstract class AbstractClass {
public void methondOne(){
System.out.println("方法1");
}
public void methondTwo(){
System.out.println("方法2");
}
public final void TemplateMethod(){
methondOne();
methondTwo();
}
}
**具体实现类A
public class ConcreteClass extends AbstractClass {
@Override
public void methondOne(){
System.out.println("具体方法1");
}
@Override
public void methondTwo(){
System.out.println("具体方法2");
}
}
具体实现类B
public class ConcreteClassB extends AbstractClass {
@Override
public void methondOne(){
System.out.println("具体B方法1");
}
@Override
public void methondTwo(){
System.out.println("具体B方法2");
}
}
测试类**
public class Main {
public static void main(String[] args){
AbstractClass abstractClass;
abstractClass=new ConcreteClass();
abstractClass.TemplateMethod();
abstractClass=new ConcreteClassB();
abstractClass.TemplateMethod();
}
}
4 总结
4.1 优点:
- 封装不变部分,扩展可变部分。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
4.2 缺点:
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
4.3 使用场景:
- 有多个子类共有的方法,且逻辑相同。
- 重要的、复杂的方法,可以考虑作为模板方法。
注意事项:为防止恶意操作,一般模板方法都加上 final 关键词。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)