2013-03-22 77 views
0

每當我看到工廠設計模式,它總是有一個簡單的new FactoryName.build()方法。當創建對象時,它們具有依賴性,但在我的情況下,我有一個現有的項目,我在運行時比在初始化時運行更多(考慮在現有的複雜代碼庫中,而不是簡單的工廠設計示例)。因此,爲了注入所需的依賴關係,我的build的實現不可能僅實現爲return new Blah(new This(), new That())工廠設計模式禁止?

所以如果我想傳遞的參數來構建(如:build(SomeENUM type),和/或甚至自動檢測內部構建依賴關係(如:some logic to auto-detect SomeENUM type)是一方或雙方的固有錯誤的

回答

0

的「?創建」像(出廠/編譯)抽象 對象實例化的過程模式由隱藏如何對象被創建並做出獨立的對象創建過程的系統。

如果我沒有理解你的問題的權利,你不能與SomeENUM type「玩」內工廠過程。這是工廠模式的主要目標是使像黑匣子全部過程

我把打印屏幕從好的文件:

enter image description here enter image description here

+0

好了,來電者一個工廠應該聲明預先考慮它想要的實現類型。比喻說,它應該從餐廳菜單中下訂單,而不要問服務員什麼是好吃的? – Zombies 2013-03-22 07:44:07

+1

的權利,但如果你使用抽象工廠模式,你可以決定去哪家餐館(改變菜單)。見上面的例子。順便說一句,Build Factory是基於你傳遞給工廠啓動的參數。而在門的另一邊,你會得到產品。 – 2013-03-22 07:54:08