2010-11-09 77 views
0

這可能是一個愚蠢的問題,但無論如何,我會放棄它。如何處理可以在許多類中使用的方法?

這是針對PHP5的。可以說我有兩個類Member.class.phpForum.class.php,並有一個method調用returnDate($queryDate)可以在兩個類中使用 - 對於成員類它返回用戶最後看到的日期和它返回的論壇類最後回答。例如,Member: Jonny - last seen **2 mins ago**.Forum post: last answered **10 mins ago**.

我假設把這個方法放到兩個類中以避免重複是一個壞主意,所以我想知道這是接口類會派上用場的嗎?或者我做了一些很明顯的事情,比如爲網站創建一個類,以便將其放入例如Website.class.php。只是想進一步理解我的感謝。

+0

這有點主觀。我認爲將這種方法分爲兩類是不好的,因爲它們很可能在收集信息方面做了大量不同的工作。如果你想集中一些你可以創建一個具有靜態方法的String.class.php來將返回的值轉換爲一個本地化的字符串(根據集中規則動態地說「2分鐘前」或「3小時前」), 。 – 2010-11-09 02:42:45

+0

@dpk:答案框有點低:P – 2010-11-09 02:44:18

+0

是的。我沒有回答,因爲我認爲它沒有真正的「正確」答案。我可以介入所有其他選項,例如從一個普通類中繼承兩個類或者編寫一個接口(如他所談論的),但它實際上都依賴於環境。 (另外,我的意思是給我的評論增加一點點,但是在這些textarea框中輸入文本時,Stackoverflow.com錯誤地陷阱「返回」,所以我放棄了並離開它。) – 2010-11-09 02:49:11

回答

1

假設這兩個功能基本相同...

我的建議:組合>繼承。

創建一個'DateHelper'類,並將其實例化爲每個類的組件。這樣你就有了代碼生活的地方(DRY!),很明顯,這兩個類之間有一些共享功能。你也可以使該方法成爲靜態方法,並調用DateHelper :: returnDate($ x),但我儘量減少靜態函數的使用。

此方法的優點是可以添加更多與日期相關的功能,並將其保存在與日期相關的內容易於理解的單個位置。

相關問題