基于设计模式的学习之旅-----模板方法模式(附源码)

          基于设计模式的学习之旅-----模板方法模式

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)账号。这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同的账号类型。

41涉及到的类,以及类图

AbstractAccountCurrentAccountTimeAccount

42具体的代码实现

AbstractAccount

CurrentAccount

TimeAccount

43事例输出结果

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(具体类,如CurrentAccountTimeAccount

6模式优缺点

     A、把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。

7模式适用性

A一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

B各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。

C控制子类扩展。

 

点击下载“文档以及源码下载

 

欢迎转载,请注明出处“http://www.cnblogs.com/luxiaofeng54/archive/2013/04/12/3017192.html

 

 

posted on   陆晓峰  阅读(1195)  评论(0编辑  收藏  举报

编辑推荐:
· 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,谁才是开发者新宠?

导航

< 2013年4月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11
点击右上角即可分享
微信分享提示