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

     在Java.util包中有一個處理集合的工具類Collections,它有一個用來排序的方法sort(),有兩個參數,一個是需要排序的集合,另一個是一個Comparator實例。這個方法用的究竟是二十三中經典設計模式中的哪一種,是模板還是策略?我認爲是這兩者的結合,但偏向於策略。下面從兩個角度進行分析:

    說是模板模式。它是把排序算法中的一個步驟拿出來,讓用戶在外面去實現具體的比較邏輯,是模板模式的典型應用。它不是策略模式,因爲,策略模式是要實現不同的算法,把不同的算法放到一個類羣裏。

    說是策略模式。Comparator可以派生出很多子類,這些子類實現不同的策略,應用到Collections#sort()方法中,實現不同的排序效果。它不是模板模式,因爲,模板模式最常見的做法是通過繼承來實現抽象的,而這個方法不是靠繼承來達到目的。

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