基于设计模式的学习之旅-----模板方法模式(附源码)
基于设计模式的学习之旅-----模板方法模式
1、初识模板方法模式
经常用单元测试的人会知道,在继承TestCase的测试类中有两个方法,一个是setUp,一个是tearDown。在运行test方法的时候总会先执行setUp,然后在执行test,最后总会执行tearDown。
这其实就是TestCase类定义好的顶级框架顺序。也是模版方法设计模式的体现。
2、什么是模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。
3、模式结构图
4、模式代码事例
场景:考虑一个计算存款利息的例子。假设系统需要支持两种存款账号,即活期存款(current account)账号和定期存款(time Deposite)账号。这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同的账号类型。
4、1涉及到的类,以及类图
AbstractAccount、CurrentAccount、TimeAccount
4、2具体的代码实现
AbstractAccount
CurrentAccount
TimeAccount
4、3事例输出结果
5、模式参与者
A b s t r a c t C l a s s(抽象类,如AbstractAccount)
C o n c r e t e C l a s s(具体类,如CurrentAccount、TimeAccount)
6、模式优缺点
7、模式适用性
A、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
B、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
C、控制子类扩展。
点击下载“文档以及源码下载”
欢迎转载,请注明出处“http://www.cnblogs.com/luxiaofeng54/archive/2013/04/12/3017192.html”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?