Collections.sort() 方法是模板模式还是策略模式?

     在Java.util包中有一个处理集合的工具类Collections,它有一个用来排序的方法sort(),有两个参数,一个是需要排序的集合,另一个是一个Comparator实例。这个方法用的究竟是二十三中经典设计模式中的哪一种,是模板还是策略?我认为是这两者的结合,但偏向于策略。下面从两个角度进行分析:

    说是模板模式。它是把排序算法中的一个步骤拿出来,让用户在外面去实现具体的比较逻辑,是模板模式的典型应用。它不是策略模式,因为,策略模式是要实现不同的算法,把不同的算法放到一个类群里。

    说是策略模式。Comparator可以派生出很多子类,这些子类实现不同的策略,应用到Collections#sort()方法中,实现不同的排序效果。它不是模板模式,因为,模板模式最常见的做法是通过继承来实现抽象的,而这个方法不是靠继承来达到目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章