建立型-Factory 方法模式

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   2014   div   

1、Factory 方法模式意圖:

定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。Factory Method使一個類的執行個體化延遲到其子類。

2、應用情境:

 考慮一個榨汁機的應用情境。榨汁機可以用來製作蘋果汁、西瓜汁、橘汁等,即榨汁機可以用來製作水果汁。但是,夏天的冷飲店中,為了提高製作水果汁的效率和防止味道互串等情況,可能需要分別準備三個水果榨汁機,分別用來生產蘋果汁、西瓜汁、橘汁等。

3、Factory 方法模式類圖:

     

角色:

  • Product:定義Factory 方法所建立對象。如情境描述中的果汁。
  • ConcreteProduct:實現Product中的介面,定義具體化的產品。如情境描述中的蘋果汁、西瓜汁、橘汁等。
  • Creator:用於聲明建立Product類型對象的Factory 方法。如情境中的榨汁機這一概念。
  • ConcreteCreator:實現Creator中的Factory 方法,專門用於產生具體的產品ConcreteProduct。如情境中的蘋果榨汁機、西瓜榨汁機等。

協作:

  • Creator依賴於它的子類來定義Factory 方法。

4、適用性:

Factory 方法模式跟原廠模式類似,其中Factory 方法模式適合於構造同屬於同一個類別的不同產品,所有的產品屬於同一個系列中。

5、執行個體:

5.1 執行個體類圖:

     

說明:店員(Waiter)使用不同的榨汁機來製作不同的水果汁,進而銷售給顧客。

5.2 Waiter類:

除了使用者類Waiter類之外,其他的類定義明了,故僅提供使用者類。

1 public class Waiter{2       3     public void sell(Juicer juicer){4         Juice juice = juicer.MakeJuice();    //使用傳入的特定的榨汁機來生產特定的水果汁5 6         //賣給顧客,收錢7     }8 9 }

 

6、特點

  • 串連平行的類層次——Factory 方法的每個子類用於產生平行的不同的具體產品,工廠子類同具體產品平行關係。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.