国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)筆記-設(shè)計(jì)模式-創(chuàng)建型模式-工廠模式

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)筆記-設(shè)計(jì)模式-創(chuàng)建型模式-工廠模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

工廠模式

工廠模式是一種創(chuàng)建者設(shè)計(jì)模式,細(xì)分之下可以分成三類(lèi)簡(jiǎn)單工廠模式,工廠方法模式抽象工廠模式。

簡(jiǎn)單工廠模式

最簡(jiǎn)單的工廠模式,它采用靜態(tài)方法的方式來(lái)決定應(yīng)該應(yīng)該生產(chǎn)什么商品。

public class StoreFactory {

    public static ICommodity getCommodityService(Integer commodityType) {
        if (null == commodityType) {
            return null;
        }

        switch (commodityType) {
            case 1:
                return new CouponCommodityService();
            case 2:
                return new GoodsCommodityService();
            case 3:
                return new CardCommodityService();
        }

        throw new RuntimeException("不存在的商品服務(wù)類(lèi)型");
    }

}

它的優(yōu)點(diǎn)在于

  • 將創(chuàng)建實(shí)例的工作與使用實(shí)例的工作分開(kāi),使用者不必關(guān)心類(lèi)對(duì)象如何創(chuàng)建,實(shí)現(xiàn)了解耦
  • 把初始化實(shí)例時(shí)的工作放到工廠里進(jìn)行,使代碼更容易維護(hù),更符合面向?qū)ο蟮脑瓌t面向接口編程,而不是面向?qū)崿F(xiàn)編程

它的缺點(diǎn)在于

  • 工廠類(lèi)集中了所有實(shí)例的創(chuàng)建邏輯,一旦這個(gè)工廠不能正常工作,整個(gè)系統(tǒng)都會(huì)受到影響
  • 違背開(kāi)閉原則,一旦添加新的產(chǎn)品就不得不修改工廠類(lèi)的邏輯,這樣就會(huì)造成工廠邏輯過(guò)于復(fù)雜
  • 簡(jiǎn)單工廠模式使用了靜態(tài)工廠方法,靜態(tài)方法不能被繼承和重寫(xiě),會(huì)造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)

它適用于文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-695234.html

  • 客戶只知道傳入工廠類(lèi)的參數(shù),對(duì)于如何創(chuàng)建對(duì)象的邏輯不關(guān)心時(shí);
  • 當(dāng)工廠類(lèi)負(fù)責(zé)創(chuàng)建的對(duì)象比較少時(shí)。

工廠方法模式

工廠方法模式中,工廠父類(lèi)負(fù)責(zé)定義創(chuàng)建對(duì)象的公共接口,而子類(lèi)則負(fù)責(zé)生成具體的對(duì)象。

它把類(lèi)的實(shí)例化延遲到工廠類(lèi)的子類(lèi)中,由子類(lèi)來(lái)決定應(yīng)該實(shí)例化哪個(gè)類(lèi)。

由此,它解決了簡(jiǎn)單工廠模式違背了開(kāi)閉原則的問(wèn)題。

它的優(yōu)點(diǎn)在于

  • 更符合開(kāi)閉原則
  • 符合單一責(zé)任原則,每個(gè)具體工廠類(lèi)只負(fù)責(zé)創(chuàng)建對(duì)應(yīng)的產(chǎn)品
  • 不使用靜態(tài)工廠方法,可以形成基于繼承的等級(jí)結(jié)構(gòu)

它的缺點(diǎn)在于

  • 需要的類(lèi)的數(shù)量非常多,每添加一個(gè)新產(chǎn)品,就要相應(yīng)的添加一個(gè)新的工廠。
  • 雖然保證了工廠方法內(nèi)的對(duì)修改關(guān)閉,但對(duì)于使用工廠方法的類(lèi),如果要更換另一種產(chǎn)品,仍然需要修改實(shí)例化的具體工廠類(lèi)
  • 一個(gè)工廠只能創(chuàng)建一種具體產(chǎn)品

它適用于:

  • 當(dāng)一個(gè)類(lèi)不需要知道它所需要的對(duì)象的類(lèi)時(shí)
  • 當(dāng)一個(gè)類(lèi)希望通過(guò)其子類(lèi)來(lái)指定創(chuàng)建對(duì)象時(shí)
  • 將創(chuàng)建對(duì)象的任務(wù)委托給多個(gè)工廠子類(lèi)中的某一個(gè),客戶端在使用時(shí)無(wú)須關(guān)心是哪一個(gè)工廠子類(lèi)創(chuàng)建產(chǎn)品子類(lèi),需要時(shí)再動(dòng)態(tài)指定,可將具體工廠的類(lèi)名存儲(chǔ)在配置文件或數(shù)據(jù)庫(kù)中(比如spring中的FactoryBean)

抽象工廠模式

抽象工廠模式定義了一個(gè)能生產(chǎn)一個(gè)產(chǎn)品族的超級(jí)抽象工廠,然后交給子類(lèi)工廠去生產(chǎn)某一個(gè)產(chǎn)品族的產(chǎn)品。

產(chǎn)品族和產(chǎn)品等級(jí)

產(chǎn)品等級(jí)結(jié)構(gòu)既是產(chǎn)品的繼承結(jié)構(gòu)。比如一個(gè)抽象類(lèi)是電視機(jī),其子類(lèi)有海爾電視機(jī)、TCL電視機(jī),則抽象電視機(jī)與具體品牌的電視機(jī)之間構(gòu)成了一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)。

產(chǎn)品族是指由同一個(gè)工廠生產(chǎn)的,位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中的一組產(chǎn)品,如海爾生產(chǎn)的海爾電視機(jī)、海爾洗衣機(jī)和海爾冰箱,構(gòu)成了一個(gè)產(chǎn)品族。

設(shè)計(jì)模式詳解

圖中,IProductFactory是工廠接口,定義了生產(chǎn)手機(jī)和路由器組成的產(chǎn)品族的方法。而子類(lèi)工廠HuaweiFactory負(fù)責(zé)生產(chǎn)華為產(chǎn)品族,XiaomiFactory負(fù)責(zé)生產(chǎn)小米產(chǎn)品族。

另外,IPhoneProductIRouterProduct分別定義了手機(jī)和路由器兩個(gè)產(chǎn)品等級(jí)。

它的優(yōu)點(diǎn)在于

  • 一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能保證客戶端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象
  • 可以很方便地添加一個(gè)新的產(chǎn)品族

它的缺點(diǎn)在于

  • 產(chǎn)品族的拓展非常困難,要增加一個(gè)系列的某一個(gè)產(chǎn)品,既要修改工廠抽象類(lèi)里添加代碼,又要在具體的實(shí)現(xiàn)類(lèi)里面添加代碼
  • 增加了系統(tǒng)的抽象性和理解難度

它適用于

  • 一系列相關(guān)產(chǎn)品對(duì)象(屬于同一產(chǎn)品族)一起創(chuàng)建時(shí)需要大量的重復(fù)代碼
  • 提供一個(gè)產(chǎn)品類(lèi)的庫(kù),所有的產(chǎn)品以同樣的接口出現(xiàn),從而使得客戶端不依賴于具體的實(shí)現(xiàn)

到了這里,關(guān)于學(xué)習(xí)筆記-設(shè)計(jì)模式-創(chuàng)建型模式-工廠模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    抽象工廠模式(Abstract Factory Pattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類(lèi)。抽象工廠模式又稱為Kit模式,它是一種對(duì)象創(chuàng)建型模式。 由于工廠方法模式中的每個(gè)工廠只生產(chǎn)一類(lèi)產(chǎn)品,可能會(huì)導(dǎo)致系統(tǒng)中存在大量的工廠類(lèi),勢(shì)必會(huì)增加系

    2024年02月22日
    瀏覽(28)
  • 【設(shè)計(jì)模式】創(chuàng)建型-抽象工廠模式

    【設(shè)計(jì)模式】創(chuàng)建型-抽象工廠模式

    在工廠方法模式中,每一個(gè)具體的工廠子類(lèi)只能生成一種具體的產(chǎn)品,如果想要生產(chǎn)另外一種產(chǎn)品,就需要重新定義一個(gè)抽象工廠類(lèi),這樣的拓展性還是會(huì)有點(diǎn)不足,而抽象工廠模式則是可以一個(gè)具體工廠可以生產(chǎn)不同的產(chǎn)品。 在學(xué)習(xí)抽象工廠模式之前先了解一下 產(chǎn)品族和

    2023年04月09日
    瀏覽(47)
  • 創(chuàng)建型設(shè)計(jì)模式05-抽象工廠模式

    創(chuàng)建型設(shè)計(jì)模式05-抽象工廠模式

    ?作者:貓十二懿 ?????賬號(hào):CSDN 、掘金 、個(gè)人博客 、Github ??公眾號(hào):貓十二懿 抽象工廠模式(Abstract Factory Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,圍繞一個(gè)超級(jí)工廠創(chuàng)建其他工廠,也稱作為工廠的工廠(大工廠里的小工廠)。在抽象工廠模式中, 接口負(fù)責(zé)創(chuàng)建一組相關(guān)對(duì)

    2024年02月07日
    瀏覽(22)
  • 學(xué)習(xí)筆記-設(shè)計(jì)模式-創(chuàng)建型模式-單例模式

    一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)此實(shí)例的點(diǎn),哪怕多線程同時(shí)訪問(wèn)。 單例模式主要解決了 一個(gè)全局使用的類(lèi)被頻繁的創(chuàng)建和消費(fèi) 的問(wèn)題。 單例模式的案例場(chǎng)景 數(shù)據(jù)庫(kù)的連接池不會(huì)反復(fù)創(chuàng)建 spring中一個(gè)單例模式bean的生成和使用 在我們平常的代碼中需要設(shè)置全局

    2024年02月08日
    瀏覽(18)
  • 設(shè)計(jì)模式-創(chuàng)建型模式(單例、工廠、建造、原型)

    設(shè)計(jì)模式:軟件設(shè)計(jì)中普遍存在(反復(fù)出現(xiàn))的各種問(wèn)題,所提出的解決方案。 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)。 面向?qū)ο笤O(shè)計(jì)的SOLID原則: (1)開(kāi)放封閉原則:一個(gè)軟件實(shí)體如類(lèi)、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。即軟件實(shí)體應(yīng)盡量在不修改原有代碼的情

    2024年02月08日
    瀏覽(28)
  • 【java設(shè)計(jì)模式】創(chuàng)建型模式介紹(工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式)

    簡(jiǎn)介 本文介紹Java設(shè)計(jì)模式中創(chuàng)建型模式的五種 一、工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。 工廠模式提供了一種將對(duì)象的實(shí)例化過(guò)程封裝在工廠類(lèi)中的方式。通過(guò)使用工

    2024年02月16日
    瀏覽(23)
  • 設(shè)計(jì)模式 - 創(chuàng)建型模式考點(diǎn)篇:工廠模式、建造者模式

    設(shè)計(jì)模式 - 創(chuàng)建型模式考點(diǎn)篇:工廠模式、建造者模式

    目錄 一、創(chuàng)建型模式 一句話概括 1.1、工廠模式 1.1.1、簡(jiǎn)單工廠模式(非 23 種經(jīng)典設(shè)計(jì)模式) 概述 案例 1.1.2、靜態(tài)工廠(擴(kuò)展) 1.1.3、工廠方法模式 概念 案例 1.2、建造者模式 1.2.1、概念 1.2.2、案例 1.2.3、建造者模式擴(kuò)展:鏈?zhǔn)骄幊痰讓?1.3、工廠方法模式 VS 建造者模式 創(chuàng)

    2024年02月07日
    瀏覽(18)
  • 【Java 設(shè)計(jì)模式】創(chuàng)建型之工廠方法模式

    【Java 設(shè)計(jì)模式】創(chuàng)建型之工廠方法模式

    在軟件開(kāi)發(fā)中,工廠方法模式是一種常見(jiàn)的創(chuàng)建型設(shè)計(jì)模式, 它提供了一種將對(duì)象的實(shí)例化延遲到子類(lèi)的方法 。工廠方法模式通過(guò)定義一個(gè)創(chuàng)建對(duì)象的接口,但是讓子類(lèi)決定實(shí)例化哪個(gè)類(lèi)。在本文中,我們將介紹 Java 設(shè)計(jì)模式中的工廠方法模式,了解其定義、使用場(chǎng)景以及

    2024年01月17日
    瀏覽(26)
  • 【Java 設(shè)計(jì)模式】創(chuàng)建型之抽象工廠模式

    【Java 設(shè)計(jì)模式】創(chuàng)建型之抽象工廠模式

    在軟件開(kāi)發(fā)中,抽象工廠模式是一種常見(jiàn)的創(chuàng)建型設(shè)計(jì)模式, 它提供了一種創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類(lèi) 。抽象工廠模式的核心思想是將一組相關(guān)的產(chǎn)品組合成一個(gè)工廠,客戶端通過(guò)工廠接口創(chuàng)建一系列產(chǎn)品。在本文中,我們將介紹 Jav

    2024年01月17日
    瀏覽(26)
  • C++設(shè)計(jì)模式創(chuàng)建型之工廠模式整理

    一、工廠模式分類(lèi) ????????工廠模式屬于創(chuàng)建型模式,一般可以細(xì)分為簡(jiǎn)單工廠模式、工廠模式和抽象工廠模式。每種都有不同的特色和應(yīng)用場(chǎng)景。 二、工廠模式詳情 1、簡(jiǎn)單工廠模式 1)概述 ? ? ? ? 簡(jiǎn)單工廠模式相對(duì)來(lái)說(shuō),在四人組寫(xiě)的《設(shè)計(jì)模式------可復(fù)用面向?qū)?/p>

    2024年02月14日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包