設(shè)計模式系列-簡單工廠模式

JAVA設(shè)計模式系列:

定義

簡單工廠模式又叫做靜態(tài)工廠方法模式扩氢,是常用的實例化對象模式。

角色

  • 工廠類:工廠類包含了負(fù)責(zé)創(chuàng)建所有實例具體邏輯蚂维;可以直接被外界調(diào)用來創(chuàng)建所需要的對象。

  • 抽象產(chǎn)品類:工廠類所創(chuàng)建對象的父類。

  • 具體產(chǎn)品類:工廠類創(chuàng)建的具體對象。

實現(xiàn)

這里簡單寫一個示例來實現(xiàn)普通工廠模式沉帮。

類圖

抽象產(chǎn)品類

public interface IFruit {

    void get();
}

定義了一個抽象水果類IFruit,其中包含一個get()贫堰。

具體產(chǎn)品類

public class Apple implements IFruit {

    @Override
    public void get() {
        System.out.println("I am a apple.");
    }
}

public class Orange implements IFruit {

    @Override
    public void get() {
        System.out.println("I am a orange." );
    }
}

定義了2個具體水果類Apple遇西、Orange分別實現(xiàn)了IFruitget()方法。

工廠類

public class FruitFactory {

    public static IFruit getFruit(String type) {

        IFruit ifruit = null;
        if ("apple".equals(type)) {
            ifruit = new Apple();
        } else if ("orange".equals(type)) {
            ifruit = new Orange();
        }
        return ifruit;
    }
}

工廠類包含一個靜態(tài)方法getFruit(),功能是:根據(jù)不同的type返回不同的水果實例严嗜。

測試

    public static void main(String[] args) {

        IFruit apple = FruitFactory.getFruit("apple");
        IFruit orange = FruitFactory.getFruit("orange");

        apple.get();
        orange.get();
    }

分別調(diào)用水果工廠FruitFactory類來實例化2個不同的水果實例。運行結(jié)果:

I am a apple.
I am a orange.

總結(jié)

  • 優(yōu)點:可以隱藏具體類名稱洲敢,提供參數(shù)給使用者直接調(diào)用漫玄;避免直接實例化對象,無需準(zhǔn)備構(gòu)造函數(shù)參數(shù)压彭。

  • 缺點:在增加新產(chǎn)品的時候睦优,必須修改工廠類,違背了開放封閉原則壮不。

JAVA設(shè)計模式系列:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(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
  • 文/不壞的土叔 我叫張陵蛛倦,是天一觀的道長歌懒。 經(jīng)常有香客問我,道長胰蝠,這世上最難降的妖魔是什么歼培? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮茸塞,結(jié)果婚禮上躲庄,老公的妹妹穿的比我還像新娘。我一直安慰自己钾虐,他們只是感情好噪窘,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著效扫,像睡著了一般倔监。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菌仁,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天浩习,我揣著相機與錄音,去河邊找鬼济丘。 笑死谱秽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摹迷。 我是一名探鬼主播疟赊,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峡碉!你這毒婦竟也來了近哟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤鲫寄,失蹤者是張志新(化名)和其女友劉穎吉执,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體地来,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鼠证,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靠抑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片量九。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荠列,到底是詐尸還是另有隱情类浪,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布肌似,位于F島的核電站费就,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏川队。R本人自食惡果不足惜力细,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望固额。 院中可真熱鬧眠蚂,春花似錦、人聲如沸斗躏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啄糙。三九已至笛臣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隧饼,已是汗流浹背沈堡。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留燕雁,地道東北人踱蛀。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像贵白,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崩泡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 工廠模式是最常用的一類創(chuàng)建型設(shè)計模式禁荒,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式角撞。本章將...
    justCode_閱讀 857評論 0 3
  • 1.簡單工廠模式簡介 前言 今天放假拖更幾天 定義 簡單工廠模式屬于創(chuàng)建型模式又叫做靜態(tài)工廠方法模式呛伴,是由一個工廠...
    人生苦短啊閱讀 399評論 0 1
  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用谒所、多...
    MinoyJet閱讀 3,949評論 1 15
  • 簡單工廠模式雖然簡單热康,但存在一個很嚴(yán)重的問題。當(dāng)系統(tǒng)中需要引入新產(chǎn)品時劣领,由于靜態(tài)工廠方法通過所傳入?yún)?shù)的不同來創(chuàng)建...
    justCode_閱讀 1,190評論 1 9
  • 清晨6點多鐘姐军,建萍姐、愛人和我就出門沿著湖邊開始走路晨練。當(dāng)然作為我也不僅僅是晨練奕锌,更是帶著新鮮“好奇”的心情看看...
    趙勝強閱讀 463評論 0 0