设计模式——模板方法模式(TemplateMethod Pattern)
2013-11-08 00:39 雪夜&流星 阅读(230) 评论(0) 编辑 收藏 举报模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
UML图:
抽象模板:
package com.cnblogs.clarck; /** * 抽象模板,并实现了一个模板方法。 * * @author clarck * */ public abstract class AbstractClass { public abstract void primitiveOperation1(); public abstract void primitiveOperation2(); /** * 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,将具体的操作推迟到了子类实现。 */ public void TemplateMethod() { primitiveOperation1(); primitiveOperation2(); System.out.println(""); } }
实现父类的一个或多个抽象方法:
package com.cnblogs.clarck; /** * 实现父类的一个或多个抽象方法 * * @author clarck * */ public class ConcrateClassA extends AbstractClass { @Override public void primitiveOperation1() { System.out.println("具体类A的方法1实现"); } @Override public void primitiveOperation2() { System.out.println("具体类A的方法2实现"); } }
package com.cnblogs.clarck; public class ConcrateClassB extends AbstractClass { @Override public void primitiveOperation1() { System.out.println("具体类B的方法1实现"); } @Override public void primitiveOperation2() { System.out.println("具体类B的方法2实现"); } }
测试类:
package com.cnblogs.clarck; /** * 测试类 * * @author clarck * */ public class Client { public static void main(String[] args) { AbstractClass abstractClass; abstractClass = new ConcrateClassA(); abstractClass.TemplateMethod(); abstractClass = new ConcrateClassB(); abstractClass.TemplateMethod(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本