通過Head First Design Patterns書籍工作。工廠方法何時比簡單工廠更好,反之亦然?
我相信我理解簡單工廠和工廠方法,但是我很難看到工廠方法對簡單工廠有什麼優點。
如果對象A使用一個簡單的工廠來創建其乙對象,那麼客戶端可以這樣創建:
A a = new A(new BFactory());
而如果一個對象使用工廠方法,客戶機可以這樣創建:
A a = new ConcreteA(); // ConcreteA contains a method for instantiating
// the same Bs that the BFactory above creates, with
// the method hardwired into the subclass of A, ConcreteA.
所以在簡單工廠的情況下,客戶端組成A,與乙工廠,而與工廠的方法,所述客戶端選擇爲它想要的類型B的適當子類。
他們之間似乎沒有多少選擇。要麼你必須選擇你想要編寫的BFactory,或者你必須選擇A的正確子類來爲你提供Bs。
在什麼情況下比另一個好?
謝謝大家!
編輯:增加一點混亂海事組織是在首腦敘述中給出的解釋,他們從簡單的工廠過渡到工廠方法,通過說(第119頁)「特許經營企業正在使用您的[簡單]工廠創建比薩餅,但開始採用他們自己的本土程序進行其餘的過程:他們會烘烤一些不同的東西。「他們有一張廚師的照片,顯然他做了一些令他厭惡的比薩餅。
但是沒有關於使用一個簡單的工廠,讓客戶訪問bake()方法或過程的任何其他部分。而且沒有關於使用工廠方法的問題,如果它有任何問題,這些方法都會有所幫助。
所以看起來我喜歡它的原因深入淺出意味着使用一個工廠方法在一個簡單的工廠是假的..
我明白你的觀點,也被這個困惑了。我認爲他們的觀點是某些行爲可以通過在(抽象)基類中實現而在子類中強制執行。 – 2010-06-28 19:40:40