4.9 《硬啃设计模式》 第26章 万能排序 - 模板方法模式(Template Method Pattern)

下面是对int类型数组进行排序的代码:

4.9 《硬啃设计模式》 第26章 万能排序 - 模板方法模式(Template Method Pattern)_第1张图片  

如果我们要对字符、日期、任意类型的对象进行排序,写法也是类似的,但红色字部分的代码需要修改。
例:Person类,我们可能会按人身高排序,也可能按体重排序。
排序的框架算法是不变的,没有必要针对不同情况重新写一次。
你有什么方案来改善这个问题,做出一个能对任何类型对象排序的万能排序器呢?

应用了模板方法模式的设计:

4.9 《硬啃设计模式》 第26章 万能排序 - 模板方法模式(Template Method Pattern)_第2张图片  

说明:
1.Sort定义了排序算法的框架。
2.Compare和Swap是该算法的其中两步。
3.Compare需要各子类去实现。
4.Swap提供了缺省的实现办法。

5.继承了Sorter的IntSorter、StringSorter、PersonSorter分别实现了整数、字符串、Person的排序算法。



请看下一文……

 

 

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

www.umlonline.org创办人

你可能感兴趣的:(设计模式,template,method)