2019-02-15——設(shè)計(jì)模式 工廠(chǎng)模式

工廠(chǎng)模式分為三種:

1. 簡(jiǎn)單工廠(chǎng)
特點(diǎn):一個(gè)工廠(chǎng)類(lèi)根據(jù)傳入的參量決定創(chuàng)建出那一種產(chǎn)品類(lèi)的實(shí)例搅吁,如果想要增加一個(gè)產(chǎn)品,需要修改工廠(chǎng)類(lèi),該設(shè)計(jì)破壞了開(kāi)閉原則椿息。

public interface Fruit {
}

public class Apple implements Fruit {
}

public class Orange implements Fruit {
}

public class SimpleFactory {
    public static Fruit createFruit(String name){
        if("apple".equals(name)){
            return new Apple();
        }else if("orange".equals(name)){
            return new Orange();
        }else{
            throw new RuntimeException("unknown fruit name");
        }
    }
}

public class T {
    public static void main(String[] args) {
        Fruit apple = SimpleFactory.createFruit("apple");
    }
}

2. 工廠(chǎng)方法
特點(diǎn):定義一個(gè)用于創(chuàng)建產(chǎn)品的接口法希,由子類(lèi)決定生產(chǎn)什么產(chǎn)品枷餐。每個(gè)產(chǎn)品都對(duì)應(yīng)了一個(gè)創(chuàng)建者,每個(gè)創(chuàng)建者獨(dú)立負(fù)責(zé)創(chuàng)建對(duì)應(yīng)的產(chǎn)品對(duì)象苫亦,非常符合單一職責(zé)原則毛肋。但是每增加一個(gè)產(chǎn)品都需要增加一個(gè)對(duì)應(yīng)的工廠(chǎng)實(shí)現(xiàn)怨咪,增加了系統(tǒng)的復(fù)雜性

public interface Fruit {
}

public class Apple implements Fruit {
}

public class Orange implements Fruit {
}

public interface FruitFactory {
    Fruit createFruit();
}

public class AppleFactory implements FruitFactory {
    @Override
    public Fruit createFruit() {
        return new Apple();
    }
}

public class OrangeFactory implements FruitFactory {
    @Override
    public Fruit createFruit() {
        return new Orange();
    }
}

public class T {
    public static void main(String[] args) {
        FruitFactory appleFactory = new AppleFactory();
        Fruit apple = appleFactory.createFruit();
        FruitFactory orangeFactory = new OrangeFactory();
        Fruit orange = orangeFactory.createFruit();
    }
}

3. 抽象工廠(chǎng)
特點(diǎn):提供一個(gè)創(chuàng)建產(chǎn)品族的接口,其每個(gè)子類(lèi)可以生產(chǎn)一系列相關(guān)的產(chǎn)品润匙。創(chuàng)建相關(guān)或依賴(lài)對(duì)象的家族诗眨,而無(wú)需明確指定具體類(lèi),但是在新增一個(gè)產(chǎn)品時(shí)孕讳,需要修改工廠(chǎng)接口及其子類(lèi)匠楚,破壞了開(kāi)閉原則

public interface Staple {
}


public class Flour implements Staple {
}


public class Rice implements Staple {
}


public interface Dish {
}


public class Cabbage implements Dish {
}


public class Radish implements Dish{
}


public interface FoodFactory {
    Staple createStaple();
    Dish createDish();
}


public class NorthFood implements FoodFactory {
    @Override
    public Staple createStaple() {
        return new Flour();
    }

    @Override
    public Dish createDish() {
        return new Radish();
    }
}


public class SouthFood implements FoodFactory {
    @Override
    public Staple createStaple() {
        return new Rice();
    }

    @Override
    public Dish createDish() {
        return new Cabbage();
    }
}


public class T {
    public static void main(String[] args) {
        FoodFactory southFoodFactory = new SouthFood();
        Dish cabbage = southFoodFactory.createDish();
        Staple rice = southFoodFactory.createStaple();

        FoodFactory norFoodFactory = new NorthFood();
        Dish rasidh = southFoodFactory.createDish();
        Staple flour = southFoodFactory.createStaple();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厂财,隨后出現(xiàn)的幾起案子芋簿,更是在濱河造成了極大的恐慌,老刑警劉巖蟀苛,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件益咬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡帜平,警方通過(guò)查閱死者的電腦和手機(jī)幽告,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裆甩,“玉大人冗锁,你說(shuō)我怎么就攤上這事∴退ǎ” “怎么了冻河?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茉帅。 經(jīng)常有香客問(wèn)我叨叙,道長(zhǎng),這世上最難降的妖魔是什么堪澎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任擂错,我火速辦了婚禮,結(jié)果婚禮上樱蛤,老公的妹妹穿的比我還像新娘钮呀。我一直安慰自己,他們只是感情好昨凡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布爽醋。 她就那樣靜靜地躺著,像睡著了一般便脊。 火紅的嫁衣襯著肌膚如雪蚂四。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音证杭,去河邊找鬼田度。 笑死,一個(gè)胖子當(dāng)著我的面吹牛解愤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乎莉,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼送讲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惋啃?” 一聲冷哼從身側(cè)響起哼鬓,我...
    開(kāi)封第一講書(shū)人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎边灭,沒(méi)想到半個(gè)月后异希,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绒瘦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年称簿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惰帽。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡憨降,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出该酗,到底是詐尸還是另有隱情授药,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布呜魄,位于F島的核電站悔叽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏爵嗅。R本人自食惡果不足惜娇澎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望操骡。 院中可真熱鬧九火,春花似錦、人聲如沸册招。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)是掰。三九已至虑鼎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炫彩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工匾七, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人江兢。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓昨忆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親杉允。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邑贴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

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

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用叔磷、多...
    MinoyJet閱讀 3,922評(píng)論 1 15
  • 設(shè)計(jì)原則: 要依賴(lài)抽象拢驾,不要依賴(lài)具體類(lèi) 目錄 本文的結(jié)構(gòu)如下: 什么是抽象工廠(chǎng)模式 為什么要用該模式 模式的結(jié)構(gòu) ...
    w1992wishes閱讀 1,105評(píng)論 0 6
  • 工廠(chǎng)模式是我們最常用的實(shí)例化對(duì)象模式了,是用工廠(chǎng)方法代替new操作的一種模式改基。通常我們所說(shuō)的工廠(chǎng)模式是指工廠(chǎng)方法模...
    zfylin閱讀 1,312評(píng)論 0 7
  • 打假必備款之區(qū)塊鏈技術(shù) 都說(shuō)2018年區(qū)塊鏈超級(jí)火繁疤,凡是和區(qū)塊鏈沾點(diǎn)邊的新聞點(diǎn)擊率都很高,上至企業(yè)老板下至普通員工...
    藝術(shù)區(qū)AET閱讀 168評(píng)論 0 0
  • 2018第2場(chǎng)雪秕狰,前天上午停稠腊,前晚開(kāi)下,昨早全體出動(dòng)封恰,還未掃完再次開(kāi)下麻养,鼓樓周邊首見(jiàn)鏟車(chē)掃雪。為趕時(shí)間壓雪騎行诺舔,遇...
    自在陽(yáng)子閱讀 274評(píng)論 4 5