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

1.簡單工廠模式簡介

前言

今天放假拖更幾天

定義

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

簡單工廠模式結構圖

image.png
  • Factory:工廠類杏糙,簡單工廠模式的核心何什,它負責實現(xiàn)創(chuàng)建所有實例的內部邏輯璧榄。工廠類的創(chuàng)建產品類的方法可以被外界直接調用树灶,創(chuàng)建所需的產品對象。
  • IProduct:抽象產品類黄娘,簡單工廠模式所創(chuàng)建的所有對象的父類峭状,它負責描述所有實例所共有的公共接口克滴。
  • Product:具體產品類,是簡單工廠模式的創(chuàng)建目標优床。

2.簡單工廠模式簡單實現(xiàn)

這里我們用生產電腦來舉例劝赔,假設有一個電腦的代工生產商,它目前已經可以代工生產聯(lián)想電腦了胆敞,隨著業(yè)務的拓展着帽,這個代工生產商還要生產惠普和華碩的電腦,這樣我們就需要用一個單獨的類來專門生產電腦移层,這就用到了簡單工廠模式仍翰。下面我們來實現(xiàn)簡單工廠模式:

創(chuàng)建抽象產品類

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

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

創(chuàng)建具體產品類

接著我們創(chuàng)建各個品牌的電腦予借,他們都繼承了他們的父類Computer ,并實現(xiàn)了父類的start方法:
聯(lián)想電腦:

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

惠普電腦:

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

華碩電腦:

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

創(chuàng)建工廠類

接下來創(chuàng)建一個工廠類频蛔,它提供了一個靜態(tài)方法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.使用簡單工廠模式的場景和優(yōu)缺點

使用場景

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

簡單工廠模式優(yōu)缺點

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市现柠,隨后出現(xiàn)的幾起案子院领,更是在濱河造成了極大的恐慌,老刑警劉巖够吩,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件比然,死亡現(xiàn)場離奇詭異,居然都是意外死亡周循,警方通過查閱死者的電腦和手機强法,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門万俗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饮怯,你說我怎么就攤上這事闰歪。” “怎么了硕淑?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵课竣,是天一觀的道長。 經常有香客問我置媳,道長于樟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任拇囊,我火速辦了婚禮迂曲,結果婚禮上,老公的妹妹穿的比我還像新娘寥袭。我一直安慰自己路捧,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布传黄。 她就那樣靜靜地躺著杰扫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膘掰。 梳的紋絲不亂的頭發(fā)上章姓,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音识埋,去河邊找鬼凡伊。 笑死,一個胖子當著我的面吹牛窒舟,可吹牛的內容都是我干的系忙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼惠豺,長吁一口氣:“原來是場噩夢啊……” “哼银还!你這毒婦竟也來了?” 一聲冷哼從身側響起洁墙,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤见剩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扫俺,有當地人在樹林里發(fā)現(xiàn)了一具尸體苍苞,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹呵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骂际。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冈欢,靈堂內的尸體忽然破棺而出歉铝,到底是詐尸還是另有隱情,我是刑警寧澤凑耻,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布太示,位于F島的核電站,受9級特大地震影響香浩,放射性物質發(fā)生泄漏类缤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一邻吭、第九天 我趴在偏房一處隱蔽的房頂上張望餐弱。 院中可真熱鬧,春花似錦囱晴、人聲如沸膏蚓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驮瞧。三九已至,卻和暖如春枯芬,著一層夾襖步出監(jiān)牢的瞬間论笔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工破停, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翅楼,地道東北人尉剩。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓真慢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親理茎。 傳聞我的和親對象是個殘疾皇子黑界,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容

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