設計模式--抽象工廠模式(Abstract Factory Pattern)

定義:

爲建立一組相關或者是相互依賴的對象提供一個接口,而不須要指定它們的具體類。設計模式

使用場景:

一個對象族具備相同的約束時,可使用抽象工廠模式。設計

  • 一個系統不該當依賴於產品類實例如何被建立、組合和表達的細節,這對於全部類型的工廠模式都是重要的。
  • 系統中有多於一個的產品族,而每次只使用其中某一產品族。
  • 屬於同一個產品族的產品將在一塊兒使用,這一約束必須在系統的設計中體現出來。
  • 系統提供一個產品類的庫,全部的產品以一樣的接口出現,從而使客戶端不依賴於具體實現。

UML類圖

優勢:

  • 抽象工廠模式隔離了具體類的生成,使得客戶並不須要知道什麼被建立。因爲這種隔離,更換一個具體工廠就變得相對容易。全部的具體工廠都實現了抽象工廠中定義的那些公共接口,所以只需改變具體工廠的實例,就能夠在某種程度上改變整個軟件系統的行爲。另外,應用抽象工廠模式能夠實現高內聚低耦合的設計目的,所以抽象工廠模式獲得了普遍的應用。
  • 當一個產品族中的多個對象被設計成一塊兒工做時,它可以保證客戶端始終只使用同一個產品族中的對象。這對一些須要根據當前環境來決定其行爲的軟件系統來講,是一種很是實用的設計模式。
  • 增長新的具體工廠和產品族很方便,無須修改已有系統,符合「開閉原則」。

缺點:

  • 在添加新的產品對象時,難以擴展抽象工廠來生產新種類的產品,這是由於在抽象工廠角色中規定了全部可能被建立的產品集合,要支持新種類的產品就意味着要對該接口進行擴展,而這將涉及到對抽象工廠角色及其全部子類的修改,顯然會帶來較大的不便。
  • 開閉原則的傾斜性(增長新的工廠和產品族容易,增長新的產品等級結構麻煩)
相關文章
相關標籤/搜索