2012-08-28 56 views
3

當用2個對象作爲參數編寫函數時,比如比較函數或向量sum,什麼設計模式更好?什麼設計模式更好?

1)將函數寫入對象類中,只取得第二個對象。

2)用一個靜態函數寫一個外部類,它將得到兩個對象。

爲什麼和什麼時候?

+2

用什麼語言? – Dervall

+2

@德沃爾我不認爲這很重要。任何高級別的OOP語言。 – Vadiklk

+0

你的問題太含糊。我們需要知道這個函數將做什麼,它究竟返回了什麼。 –

回答

3

在Java中,你有Comparable.compareTo(o1)是代表一個對象的執行,並採取第二個對象作爲參數:

apple.compareTo(orange); 

還有Comparator.compare(o1,o2)抽象:

他們的
comparator.compare(apple, orange); 

無已被棄用並沒有一個被認爲是更好的。他們在不同的場景中都使用:

  • ,如果有水果的固定,自然的「秩序」,將其放在Fruit
  • 如果有,你可以通過(尺寸,重量比較水果多種不同的方式,顏色,味道),有幾個比較和一次使用你需要的任何一個。

你甚至可以將它們結合起來:只要默認順序適合你,你就默認訂購(編碼在Fruit之內)。如果有一天您需要不同的訂單,請選擇特定的比較器。

我相信這可以擴展到其他類似的情況和語言。

0

恕我直言,來自.NET的背景:如果任何對象可能爲空,請使用靜態方法。

如果第一個(左對象)必須爲非null,並且您希望使繼承類可以提供它們自己的等式方法實現,請使用實例方法。