2012-10-11 64 views
0

我知道工廠方法是創建對象的合適設計模式,而客戶端無需知道對象需要具體哪個具體類。但是,假定工廠在創建對象之前知道標準將對象傳播到子類創建後,根據條件

但是,我的情況有點不同。我需要創建一個對象到超類或通常是一個抽象類。一旦對象被構建(並且僅當),可以應用邏輯來確定它可以屬於哪個類別,即子類。

想象一下,你是一家招聘大學人才的大公司。孩子們不知道他們想要做什麼,你會在訓練後給他們分配職位。所以起初有人是Employee,然後6個月後,他們演變成ProgrammerQAAnalyst等取決於他們的傾向。所以我需要在創建之後將Employee類傳播到Programmer,QA, Analyst等。然後每個將繼續爲Employee,但每個都將具有它們自己獨特的屬性。開始時,他們都只是Employee,所以員工不能抽象。

我在想有一個子類創建方法返回子類,但這意味着有兩個實例,初始超類和最後我想要的子類,在這一點上,我不再需要超類。我知道我可以將父對象設置爲null,並在創建子類時對其進行GC處理,但我想知道是否有更優雅的方法來實現這一點,即設計模式。

回答

1

一旦對象被構造(並且只有那麼),就可以應用邏輯來確定它可以屬於哪個類別,即子類。

這根本不會發生。與你的類比不同,Java中的對象在其整個生命週期內都不會改變類型。

如果能在具體的講解爲什麼你認爲你需要這一點,我們也許能夠幫助 - 但我懷疑它會要麼歸結爲組成這將是一個工廠類,其中工廠將開始進行一些處理,並將處理結果傳遞給適當的子類構造函數,以避免重新計算數據。

+0

喬恩,我認爲員工vs進入程序員一段時間進入員工生活是最好的,我可以舉例 – amphibient

+0

在創建對象之前確定標準的處理正是我想要避免的。從本質上講,我想創造一個人類,並在25年後將相同的實例發展成一個Automechanic,而不必創建一個新的實例。 – amphibient

+0

@foampile:不,不是,因爲您可以告訴我們*您面臨的真正問題*。如果你實際上建模一個員工,我會使用組合:每個員工都有一個角色屬性,可以是程序員等。 –