Posted on 2008-07-22 10:49
sailor 閱讀(190)
評論(0) 編輯 收藏 所屬分類:
模式
定義
定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。
原則
依賴抽象,不依賴具體實現(依賴倒裝)
工廠方法使用繼承,把對象的創建委托給子類,子類實現工廠方法來創建對象。這個原則說明了不能讓高層組件依賴底層組件,而且,高層組件和底層組件都應該依賴于抽象。
角色

從上圖可以看出,工廠方法模式涉及到以下的角色
抽象工廠接口(Creator)
擔任這個角色的是工廠方法的核心,它是與應用程序無關,創建的工廠類必須實現該接口。
實工廠類 (Conrete Creator)
擔任這個角色的是與應用程序緊密相關的,直接在程序的調用下創建具體的產品。
產品 (Product)
擔任這個角色的是工廠方法模式所創建對象的父類,或者是必須實現的接口。
實產品 (Concrete Product)
擔任這個角色的是工廠方法模式所創建對象所屬的類。
工廠方法模式和簡單工廠模式在定義上的不同是很明顯的。工廠方法模式的核心是一個抽象工廠類,而不像簡單工廠模式, 把核心放在一個實類上。工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成為多個簡單工廠模式的綜合,從而推廣了簡單工廠模式。
反過來講,簡單工廠模式是由工廠方法模式退化而來。設想如果我們非常確定一個系統只需要一個實的工廠類, 那么就不妨把抽象工廠類合并到實的工廠類中去。而這樣一來,我們就退化到簡單工廠模式了。
工廠方法模式又叫多形性工廠模式,顯然是因為實工廠類都有共同的接口,或者都有共同的抽象父類。
實例:(略)
參考資料:《First Head 設計模式》
《
菜鳥學設計模式-------工廠方法(Factory Method)模式 》