Factory——工廠方法

 1、定義spa

        GOF上對工廠方法的意圖如此描述:定義一個用於建立對象的接口,讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到其子類。.net

         做爲類的開發者,咱們一般會在類中提供構造器方法以便客戶代碼實例化該類。然而有時候,客戶代碼並不清楚該對幾個類中的哪一類進行實例化。能夠用工廠模式定義一個用於建立對象的接口,同時控制對哪一個類進行的實例化。日誌


2、應用場景對象

         工廠方法模式的特徵是:blog

         (1)方法建立了一個新的對象;接口

         (2)方法的返回類型爲一個抽象類或接口;開發

         (3)有若干個類實現了上述抽象類型。get

       

3、類圖遍歷


                             

4、例子迭代器

       (1)工廠方法最典型的一個例子就是在迭代器模式中的應用,這裏的工廠方法連接了兩個平行的類層次結構。

        當一個類將它的一些職責委託給一個獨立的類時,就產生了平行類層次。迭代器模式中,各個組合類型將遍歷元素的操做獨立出

來,造成了迭代器類層次。

        每一個組合類型都和一個相應類型的迭代器對應。組合類的對象須要實例化對應本身的迭代器(經過CreateIterator方法),這裏的

CreateIterator方法就是工廠方法。 具體代碼能夠看以前的迭代器模式日誌

      (2)工廠方法還能爲子類提供hook,用工廠方法在一個類的內部建立對象一般比直接建立對象更爲靈活。

        GOF的代碼示例裏利用了MazeGame的例子,基類提供了Maze,Room,Wall等的工廠方法默認實現。子類經過重載這些方法,

能夠利用createMaze方法建立帶有炸彈的迷宮。這樣更有靈活性,由子類決定實例化哪一個類型的迷宮組件。

相關文章
相關標籤/搜索