創建型模式(一)ABSTRACT FACTORY(抽象工廠)-對象創建型模式

1.意圖

提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類,

2.別名

Kit

3.動機

我的工廠需要生產的產品是一系列的對象,而不是一個單一的對象時需要抽象工廠來解決。
首先我們先來了解倆個概念

1)產品等級結構:即產品的繼承結構,如一個抽象類是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。
2) 產品族:在抽象工廠模式中,產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位於電視機產品等級結構中,海爾電冰箱位於電冰箱產品等級結構中。
產品族與產品等級結構示意圖見如下:
這裏寫圖片描述
舉一個例子
這裏寫圖片描述
抽象工廠是爲了一個產品族而進行生產的

4.適用性

在以下情況使用Abstract Factory模式

  • 一個系統要獨立於它的產品的創建,組合,表示時。
  • 一個系統要由多個產品系列中的一個來配置。
  • 當你要強調一系列相關產品對象的設計以便進行聯合使用時。
  • 當你提供一個產品類庫時,而只想顯示他們的接口而不是實現時。

5.結構

這裏寫圖片描述

6.參與者

  • AbstractFactory 聲明一個創建抽象產品對象的操作接口
  • ConcreteFactory 實現創建具體產品對象的操作
  • AbstractProduct 爲一類產品對象聲明一個接口
  • ConcretePrduct 定義一個將被相應的具體工廠創建的產品對象,實現AbstractProduct接口
  • Client 僅使用有AbstractFacotory和AbstractProduct類聲明的接口。

7.協作

通常在運行時創建一個ConcreteFactory類的實例。來創建特定的產品對象。創建不同的對象要用不同的工廠。

8.效果

  1. 它分離了具體的類。你只需要控制創建對象的類,用它來創建對應的你需要的產品,而不需要知道它是怎麼創建的。
  2. 它使得易於交換產品系列。在更換一系列產品時,只需要改變具體的工廠就可以改變,
  3. 它有利於產品的一致性。它可以保證使用應用的時候使用的是一個系列的產品來協調工作
  4. 難以支持新種類的產品。

9.實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章