設計模式系列——簡單工廠模式

1.簡單工廠模式簡介

前言

今天放假拖更幾天

定義

簡單工廠模式屬于創建型模式又叫做靜態工廠方法模式,是由一個工廠對象決定創建出哪一種產品類的實例。

簡單工廠模式結構圖

image.png
  • Factory:工廠類,簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。
  • IProduct:抽象產品類,簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
  • Product:具體產品類,是簡單工廠模式的創建目標。

2.簡單工廠模式簡單實現

這里我們用生產電腦來舉例,假設有一個電腦的代工生產商,它目前已經可以代工生產聯想電腦了,隨著業務的拓展,這個代工生產商還要生產惠普和華碩的電腦,這樣我們就需要用一個單獨的類來專門生產電腦,這就用到了簡單工廠模式。下面我們來實現簡單工廠模式:

創建抽象產品類

我們創建一個電腦的抽象產品類,他有一個抽象方法用于啟動電腦:

public abstract class Computer {
    /**
     * 產品的抽象方法,由具體的產品類去實現
     */
    public abstract void start();
}

創建具體產品類

接著我們創建各個品牌的電腦,他們都繼承了他們的父類Computer ,并實現了父類的start方法:
聯想電腦:

public class LenovoComputer extends Computer{
    @Override
    public void start() {
        System.out.println("聯想電腦啟動");
    }

惠普電腦:

public class HpComputer extends Computer{
    @Override
    public void start() {
        System.out.println("惠普電腦啟動");
    }
}

華碩電腦:

public class AsusComputer extends Computer {
    @Override
    public void start() {
        System.out.println("華碩電腦啟動");
    }
}

創建工廠類

接下來創建一個工廠類,它提供了一個靜態方法createComputer用來生產電腦。你只需要傳入你想生產的電腦的品牌,它就會實例化相應品牌的電腦對象:

public class ComputerFactory {
    public static Computer createComputer(String type){
        Computer mComputer=null;
        switch (type) {
            case "lenovo":
                mComputer=new LenovoComputer();
               break;
            case "hp":
                mComputer=new HpComputer();
                break;
            case "asus":
                mComputer=new AsusComputer();
                break;
        }
        return mComputer;
    }
}

客戶端調用工廠類

客戶端調用工廠類,傳入“hp”生產出惠普電腦并調用該電腦對象的start方法:

public class CreatComputer {
    public static void main(String[]args){
      ComputerFactory.createComputer("hp").start();
    }
}

3.使用簡單工廠模式的場景和優缺點

使用場景

  • 工廠類負責創建的對象比較少。
  • 客戶只知道傳入工廠類的參數,對于如何創建對象(邏輯)不關心。

簡單工廠模式優缺點

優點:
使用戶根據參數獲得對應的類實例,避免了直接實例化類,降低了耦合性。
缺點:
可實例化的類型在編譯期間已經被確定,如果增加新類型,則需要修改工廠,違背了開放封閉原則(ASD) 。 簡單工廠需要知道所有要生成的類型,當子類過多或者子類層次過多時不適合使用。

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

推薦閱讀更多精彩內容

  • 工廠模式是最常用的一類創建型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將...
    justCode_閱讀 872評論 0 3
  • JAVA設計模式系列: 單例模式 觀察者模式 模板方法模式 簡單工廠模式 定義 簡單工廠模式又叫做靜態工廠方法模式...
    特立獨行的豬手閱讀 478評論 2 5
  • 什么是簡單工廠模式 簡單工廠模式又被稱為靜態工廠方法模式(Static Factory Method)具體就是通過...
    Kaiyulee閱讀 293評論 0 1
  • 老鄉姓霍,霍元甲的霍,名小武,自小習武,當過兵,身體特別棒,散打高手。 聽說是在網上聊天認識了現在的老婆,后來就隨...
    東風東風閱讀 376評論 1 3
  • 一 大通的馬販子把塔合勒拉走了。我把她送到砂路口,看著她混在一群形形色色的馬群中漸行漸遠,感到悲傷不已,淚水蓄滿眼...
    曠野尋蹤閱讀 601評論 3 5