《硬啃设计模式》 第26章 万能排序 - 模板方法模式(Template Method Pattern)
2014-06-06 23:07
393 查看
下面是对int类型数组进行排序的代码:
![](http://www.umlonline.org/school/attachments/091028113068d0856c0b45fa85.png)
如果我们要对字符、日期、任意类型的对象进行排序,写法也是类似的,但红色字部分的代码需要修改。
例:Person类,我们可能会按人身高排序,也可能按体重排序。
排序的框架算法是不变的,没有必要针对不同情况重新写一次。
你有什么方案来改善这个问题,做出一个能对任何类型对象排序的万能排序器呢?
应用了模板方法模式的设计:
![](http://www.umlonline.org/school/attachments/09102811306f64d7f5db9a5b2a.png)
说明:
1.Sort定义了排序算法的框架。
2.Compare和Swap是该算法的其中两步。
3.Compare需要各子类去实现。
4.Swap提供了缺省的实现办法。
5.继承了Sorter的IntSorter、StringSorter、PersonSorter分别实现了整数、字符串、Person的排序算法。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
![](http://www.umlonline.org/school/attachments/091028113068d0856c0b45fa85.png)
如果我们要对字符、日期、任意类型的对象进行排序,写法也是类似的,但红色字部分的代码需要修改。
例:Person类,我们可能会按人身高排序,也可能按体重排序。
排序的框架算法是不变的,没有必要针对不同情况重新写一次。
你有什么方案来改善这个问题,做出一个能对任何类型对象排序的万能排序器呢?
应用了模板方法模式的设计:
![](http://www.umlonline.org/school/attachments/09102811306f64d7f5db9a5b2a.png)
说明:
1.Sort定义了排序算法的框架。
2.Compare和Swap是该算法的其中两步。
3.Compare需要各子类去实现。
4.Swap提供了缺省的实现办法。
5.继承了Sorter的IntSorter、StringSorter、PersonSorter分别实现了整数、字符串、Person的排序算法。
请看下一文……
作者:张传波
创新工场创业课堂(敏捷课程)讲师
软件研发管理资深顾问
CMMI首席专家
《火球——UML大战需求分析》作者
相关文章推荐
- 4.9 《硬啃设计模式》 第26章 万能排序 - 模板方法模式(Template Method Pattern)
- 设计模式 - 模板方法模式(template method pattern) 排序(sort) 详解
- 设计模式 - 模板方法模式(template method pattern) 排序(sort) 具体解释
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- c++设计模式:模板方法模式(Template Method Pattern)
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 设计模式(一)之模板方法模式(Template Method Pattern)
- 设计模式――模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 设计模式笔记11:模板方法设计模式(Template Method Pattern)
- 例说模板方法模式(Template Method Pattern)
- 极速理解设计模式系列:20.模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 设计模式-模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method Pattern)学习笔记
- 模板方法模式(Template Method Pattern)-c++实现