我必須使用工廠模式與單身。 我的工廠類根據枚舉類型創建兩個不同的對象。Java工廠模式與枚舉
什麼是返回正確對象的最佳方式。在工廠用的if-else決定:
溶液1
if(enumType == "objectA") return new objectA()
解決方案2:枚舉類有一個復位功能:
enum ObjectType{ ObjectA{ .. return new ObjectA()..}}
THX,麥克
我必須使用工廠模式與單身。 我的工廠類根據枚舉類型創建兩個不同的對象。Java工廠模式與枚舉
什麼是返回正確對象的最佳方式。在工廠用的if-else決定:
溶液1
if(enumType == "objectA") return new objectA()
解決方案2:枚舉類有一個復位功能:
enum ObjectType{ ObjectA{ .. return new ObjectA()..}}
THX,麥克
寫枚舉上的一個函數。這樣,當你添加一個新的枚舉時,你將不會忘記爲你的工廠方法添加一個子句。通常情況下,我傾向於在幾乎任何解決方案的if
/else if
等的序列上使用多態性和方法實現。它更不容易出錯,並且在編譯時會捕獲問題,而不是運行時。
如果'enum'不在你的控制之下,那麼我可以考慮不這樣做的唯一原因,這可能不是這裏的情況。 – emory
如果在枚舉成員上有很多不同的方式分派,並且每個方法在代碼中只使用一次,那麼'switch'比方法派遣好。儘管如此,這在實踐中相當罕見。 –
如果你只能有一個類的兩個實例,我會使用一個枚舉,除非它需要另一個類作爲一個超類。
對不起,我有麻煩編輯這篇文章。我忘了:你好:) – micho
我更喜歡解決方案2,但如果你堅持解決方案1,我認爲使用'switch'語句會稍微好一點。 – emory