2012-07-27 134 views
0

我很困惑。
我已經創建了一個抽象類'Person',然後我從Person擴展了'Part-Time Employee'類。 然後我從Person中抽象出一個名爲'Full-Time Employee'的類。
然後,我創建了兩個名爲「全職員工」和「終身全職員工」的新類,這兩個類都從全職員工延伸。java創建一個從不同類繼承的對象的ArrayList

我想跟蹤一個ArrayList中的所有僱員......這就是我在概念上被卡住的地方。我創建了一個名爲Database的類,它從ArrayList擴展而來。

如何確保數組可以容納我需要的所有3個類?我是否創建了抽象類類型的數組?這讓我覺得我無法訪問我在繼承的類中定義的方法......我也讀過從ArrayList擴展它不是好習慣......所以創建一個數據庫類與ArrayList?這仍然允許我訪問我定義的所有內容嗎?

如果我想要顯示整個列表,它將如何知道使用哪個顯示函數? tenuredFullTimeEmployee或NewFullTimeEmployee的?

謝謝!

回答

0

你確實有一些選擇。如果這些類僅在行爲上有所不同,那麼您可以使用策略模式。如果您確實需要在List對象中保留不同類型的對象,然後根據該類型執行不同的操作,則可以使用訪問者模式。我的猜測是,你應該拋棄一些繼承,並採取類似於戰略的東西來抽象出不同於類的行爲。

http://www.oodesign.com/strategy-pattern.html

http://www.oodesign.com/visitor-pattern.html

要回答你的第二個問題,你是對的...而不是延長ArrayList中,你應該有類似

List<Person> people = new ArrayList<Person>(); 

然後使用兩個中的一個建議上面的模式,你可以處理不同的行爲。

相關問題