2012-03-04 39 views
3

哪裏應該不使用工廠模式,因爲我周圍的每個人都告訴我不要實例化具體對象。當涉及到測試時,工廠不容易處理,我不想爲每個可能的對象創建工廠我創建。 在所有這些困惑中,爲什麼我需要有單件工廠?過度使用工廠模式

+0

也許我只是nitpicky ...但某處,有時,不知何故,你*必須*實例化一個具體的對象。如果你不這樣做,你將不會有任何物體可以使用。問題是你在哪裏,何時以及如何做。 – cHao 2012-03-04 07:54:54

+1

哦,你不需要一個單身人士。期。你想談談可測試性......那隻會殺了它。 – cHao 2012-03-04 07:56:46

+0

是的,我知道這一點,但我不知道爲什麼人們使用它?使用它的目的是什麼 – WordsWorth 2012-03-04 08:02:20

回答

1

你應該針對接口進行編程,使用工廠模式的一切都是瘋狂的。

單身可以是有用的,但只有當需要/想要時纔是有用的。

最重要的是不要使用你不明白或看不到點的東西,值得一讀馬丁福勒書,然後再想一想,你可能會得出一條適合你的中間道路。

在編程中沒有對錯取決於很多因素。即使對所有東西都使用界面也是一件痛苦的事情,但它一直爲我付出代價。

0

接口類型是協議的規範,可能受許多對象類型支持。儘可能使用而不是接口。從版本角度來看,類比接口更靈活。有了課程,您可以發佈1.0版本,然後在2.0版本中爲課程添加新的方法。只要該方法不是抽象的,任何現有的派生類將繼續保持不變。

例如,爲數據適配器提供接口很困難,並且沒有真正的好處。開發人員仍然需要針對每個適配器進行專門的編程,因此提供接口只能帶來很小的好處。但是,您確實需要支持所有適配器之間的一致性。儘管在這種情況下接口或抽象類不合適,但提供一致的模式非常重要。您可以爲基類中的開發人員提供一致的模式。遵循這些指導來創建基類。

接口在下列情況下是合適的:

  • 幾個不相關的類要支持的協議。

  • 這些類已經建立了基類(例如,一些是用戶界面(UI)控件,一些是XML Web服務)。

  • 聚合不合適或不實用。

在所有其他情況下,類繼承是一個更好的模型。