簡單工廠模式

首頁:設計模式

適用環境
1、工廠類負責創建的對象比較少:由于創建的對象較少,不會成工廠方法中的業務邏輯太過復雜。
2、客戶端只知道傳入工廠類的參數,對于如何創建對象不關心:客戶端既不需要關心創建細節,甚至連類名都不需要記住,只需要知道類型所對應的參數。

模式結構

  • Factory:工廠角色
    工廠角色負責實現創建所有實例的內部邏輯。
  • Product:抽象產品角色
    抽象產品角色是所創建的所有對象的父類,負責描述所有實例所共有的公共接口
  • ConcreteProduct:具體產品角色
    具體產品角色是創建目標,所有創建的對象都充當這個角色的某個具體類的實例。
#include "Factory.h"
#include "ConcreteProductA.h"
#include "ConcreteProductB.h"
Product* Factory::createProduct(string proname){
    if ( "A" == proname )
    {
        return new ConcreteProductA();
    }
    else if("B" == proname)
    {
        return new ConcreteProductB();
    }
    return  NULL;
}

簡單工廠模式的優點
工廠類含有必要的判斷邏輯,可以決定在什么時候創建哪一個產品類的實例,
客戶端無須知道所創建的具體產品類的類名,只需要知道具體產品類所對應的參數即可,
對于一些復雜的類名,通過簡單工廠模式可以減少使用者的記憶量。通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。

簡單工廠模式的缺點
由于工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。使用簡單工廠模式將會增加系統中類的個數,在一定程序上增加了系統的復雜度和理解難度。
系統擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多時,有可能造成工廠邏輯過于復雜,不利于系統的擴展和維護。
簡單工廠模式由于使用了靜態工廠方法,造成工廠角色無法形成基于繼承的等級結構。

下篇:工廠方法模式

感謝:
https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/behavioral.html
http://www.runoob.com/design-pattern/design-pattern-intro.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容