城市獵人

          在一網情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89

          模式(四-2):工廠方法(Factrory Method)模式

          Posted on 2008-07-22 10:49 sailor 閱讀(191) 評論(0)  編輯  收藏 所屬分類: 模式

          定義

              定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。

          原則

              依賴抽象,不依賴具體實現(依賴倒裝)
                      工廠方法使用繼承,把對象的創建委托給子類,子類實現工廠方法來創建對象。這個原則說明了不能讓高層組件依賴底層組件,而且,高層組件和底層組件都應該依賴于抽象。

          角色

          工廠方法類圖
          從上圖可以看出,工廠方法模式涉及到以下的角色

          抽象工廠接口(Creator)
           
               擔任這個角色的是工廠方法的核心,它是與應用程序無關,創建的工廠類必須實現該接口。
          實工廠類 (Conrete Creator)
               擔任這個角色的是與應用程序緊密相關的,直接在程序的調用下創建具體的產品。
          產品 (Product)
               擔任這個角色的是工廠方法模式所創建對象的父類,或者是必須實現的接口。
          實產品 (Concrete Product)
             擔任這個角色的是工廠方法模式所創建對象所屬的類。

              工廠方法模式和簡單工廠模式在定義上的不同是很明顯的。工廠方法模式的核心是一個抽象工廠類,而不像簡單工廠模式, 把核心放在一個實類上。工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成為多個簡單工廠模式的綜合,從而推廣了簡單工廠模式。
              反過來講,簡單工廠模式是由工廠方法模式退化而來。設想如果我們非常確定一個系統只需要一個實的工廠類, 那么就不妨把抽象工廠類合并到實的工廠類中去。而這樣一來,我們就退化到簡單工廠模式了。
             工廠方法模式又叫多形性工廠模式,顯然是因為實工廠類都有共同的接口,或者都有共同的抽象父類。

          實例:(略)
              
          參考資料:《First Head 設計模式》
                              《菜鳥學設計模式-------工廠方法(Factory Method)模式


          主站蜘蛛池模板: 秀山| 宣威市| 京山县| 东丽区| 双峰县| 广元市| 滦南县| 孝感市| 大荔县| 集安市| 高安市| 昭平县| 绥阳县| 扎赉特旗| 临桂县| 澄迈县| 灵宝市| 芦溪县| 双鸭山市| 万年县| 确山县| 新乐市| 石嘴山市| 青川县| 沽源县| 通渭县| 平阳县| 呈贡县| 庐江县| 延长县| 涡阳县| 福泉市| 木兰县| 稻城县| 普兰店市| 巫溪县| 沙田区| 兴和县| 虞城县| 孟州市| 济宁市|