0

我開始設計模式自學習設計模式的四人幫如何比較由子類和模板模式實現的操作?

參數化類型的給我們一個第三條道路(除了上課 繼承和對象組合)組成的 面向對象系統的行爲。可以使用這三種技術中的任何一種來實現許多設計。 爲了參數通過它使用比較元素的 操作的排序例程,我們可以作出比較

  1. 由子類實現的操作(模板方法(325)的應用程序),
  2. 的傳遞給排序例程的對象的責任(策略(315))或
  3. C++模板或Ada泛型的參數,指定要調用的函數的名稱以比較元素。

我擡頭模板模式,但仍想知道如何在第一條道路「作出比較的子類(模板方法的應用程序)實現的操作」完成?

我會很欣賞一些例子在任何OO語言:C++,C#,Java,Python,... 謝謝。

回答

1

,他們基本上在談論這樣的事情:

class Sorter { 
    sort(Collection c) { 
    ... 
    if (isLessThan(a, b)) ... 
    ... 
    } 

    abstract isLessThan(); 
} 

class MyTypeSorter(Sorter) { 
    isLessThan(a, b) { 
    return a.member < b.member; 
    } 
} 
+0

感謝。 (1)你寫了哪個語言的例子?或者最接近的語言? (2)哪些OO語言(或其標準庫)提供排序的模板實現? Java,C++,C#,Python,...? – Ben

+0

1)它是僞代碼:)我猜,它是Java和Python之間的混合。 2)Java,C#和Python使用策略; C++使用模板參數。我不知道任何使用模板函數模式的語言,我承認這聽起來像是一個奇怪的選擇,給出了替代方案。 –