2011-04-13 51 views
2

假設我有3個類,在這些類中,我有2個通用函數和1個不同的成員(有些相同,有些不同)。
這些類對象是在foreach循環中創建的,並且在一次迭代中只創建一個類對象。什麼時候創建泛型和部分類

我在尋找創造一流的更好的方法:

  1. 可以創建然後一個基類驅動子類
  2. 可以創建一個主類,其餘部分作爲內部類
  3. 可以創建一個抽象類和其餘爲不同類別
  4. 可以創建3部分類
  5. 可以創建一個通用類

我只想知道更好的方法,以防我可以創建三個部分類或任何泛型類? - 然後請解釋。

我使用C#3.0

+0

通用類和部分類是兩個完全不同的東西... – BoltClock 2011-04-13 12:13:18

+1

您應該只使用部分類與代碼生成器結合使用。一部分是由一些工具生成的,另一部分是你自己寫的。 – slfan 2011-04-13 12:14:42

+0

@slfan:我不認爲這是部分課程的唯一目的...... – BoltClock 2011-04-13 12:15:18

回答

1

1.可以創建一個基類,然後開車子類

不錯的人選。但是,請看下面的3.。如果您有類別EmployeeManager其中Manager來自Employee您應該使用此解決方案。 Employee不是抽象的。

2.可以創建一個主類,其餘部分作爲內部類

壞的候選人。內部類只是範圍類的一種方法。大多數時候你應該避免公開內部類,然後內部類簡單地成爲你的類的實現細節。

3.可以創建一個抽象類和休息爲不同類別

不錯的人選。與1相同,除非您的基類不能實例化。如果你的基類是「不完整的」,需要派生完全指定,你應該選擇這個解決方案。如果您的課程是Employee,SalariedEmployeeExternalEmployee其中Employee是基類,則此解決方案是正確的。除非您知道員工是薪水或外部人員,否則員工的描述不正確。

4.可以創建3部分類

爲候選者。部分類是將類的源代碼拆分爲多個源文件的一種方法。

5.可以創建一個泛型類

可能是一個壞的候選人。泛型類用於創建一個單一的(泛型)類,它使用不同的類型參數實現相同的行爲。你描述了你的類有不同的方法,而泛型類根據類型參數沒有「不同的方法」。

+0

我將繼續抽象類,並將使我需要在子類中實現的功能作爲抽象。 – Nits 2011-04-18 09:25:52

0

部分類 - 允許您生成一個類,該類在同一程序集內的多個文件中實現。正如slfan指出的那樣,當部分類被生成並且部分被手寫時,這是非常有用的。

通用類 - 允許您生成一個一個類,它具有一個實現特定方式的單個實現,但不關心它的工作原理。這是一個完美的例子。 List不關心列表中的實際內容,但它知道如何獲取第一個元素或刪除第三個元素。

抽象類 - 允許您生成多個子類的單個抽象類。抽象類依賴於子類來實現一些方法。這與泛型類不同,因爲抽象類知道需要發生的事情,但它不知道子類知道什麼是實際的東西。

相關問題