設計模式-抽象工廠模式(Abstract Factory Pattern)
概要
記憶關鍵詞:抽象介面
定義:提供一個建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類。
分析:如果待建立的產品非常多,我們不需要為每一個產品類配上一個工廠類,而是可以把這些產品進行分組。抽象工廠模式是一種把產品類分組,組內不同產品物件於同一個工廠類不同方法的設計模式。
抽象工廠模式結構圖如下:
一、能解決什麼問題?
二、涉及的角色
1. 抽象介面
統一的抽象類
2. 具體實現類
實現介面的具體功能實現類
3. 工廠類介面(包含建立不同型別產品的方法)
4. 工廠類子類(按照產品分組)
5. Client
三、優缺點分析
1. 優點
1)便於交換產品系列,由於具體工廠類在一個應用中只需要在初始化的時候出現一次,這就使得改變一個應用的具體工廠變得非常容易,它只需要改變具體工廠即可使用不同的產品配置。
2)它讓具體的建立例項過程與客戶端分離,客戶端是透過它們的抽象介面操縱例項,產品的具體類名也被具體工廠的實現分離,不會出現在客戶程式碼中。
2. 缺點
如果需求來自增加功能,除了需要增加功能類介面和具體功能實現類,還需要改動相關的工廠類,這就非常糟糕了
四、簡單工廠模式、工廠方法模式、抽象工廠模式的區別
簡單工廠模式:簡單工廠模式有唯一的工廠類,工廠類的建立方法根據傳入的引數做if-else條件判斷,決定最終建立什麼樣的產品物件。
工廠方法模式:工廠方法模式由多個工廠類實現工廠介面,利用多型來建立不同的產品物件,從而避免了冗長的if-else條件判斷。
抽象工廠模式:抽象工廠模式把產品子類進行分組,同組中的不同產品由同一個工廠子類的不同方法負責建立,從而減少了工廠子類的數量。
改進:
用簡單工廠來改進抽象工廠,使用反射加配置檔案來實現