黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 抽象工廠模式和工廠模式區(qū)別

抽象工廠模式和工廠模式區(qū)別

更新時(shí)間:2022-10-26 09:28:49 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽933次

抽象工廠模式和工廠模式區(qū)別有哪些?小編來(lái)告訴大家。

簡(jiǎn)單工廠模式

簡(jiǎn)單工廠說(shuō)白了就是一個(gè)超級(jí)工廠,他可以生產(chǎn)各種各樣的產(chǎn)品,產(chǎn)品之間無(wú)關(guān)聯(lián),比如:

public interface SimpleFactory {
    //生產(chǎn)一個(gè)冰箱
    Refrigerator createRefiger();
    //生產(chǎn)一個(gè)空調(diào)
    AirConditioning createAirConditioning();
    //生產(chǎn)一個(gè) TV
    TV createTV();
}

一般也會(huì)有一個(gè)默認(rèn)的實(shí)現(xiàn):

public class DefaultSimpleFactory implements SimpleFactory{
    @Override
    public Refrigerator createRefiger() {
        return new Refrigerator();
    }
    @Override
    public AirConditioning createAirConditioning() {
        return new AirConditioning();
    }
    @Override
    public TV createTV() {
        return new TV();
    }
}

這就是一個(gè)簡(jiǎn)單工廠模式,非常的簡(jiǎn)單,還沒(méi)有很強(qiáng)的抽象性。

Spring 的 BeanFactory 其實(shí)就是一個(gè)簡(jiǎn)單工廠模式,他定義了一個(gè) BeanFactory 工廠,然后會(huì)有 DefaultListableBeanFactory 去實(shí)現(xiàn)這個(gè)工廠聲明的所有能力。

工廠方法模式

其實(shí)理論上來(lái)說(shuō),可以把簡(jiǎn)單工廠模式理解為工廠方法模式的一種特例,將他的那個(gè)超級(jí)大工廠拆分成多個(gè)工廠就是工廠方法模式了。

同樣有一個(gè)抽象接口表述一個(gè)工廠:

public interface MethodFactory {
    //生產(chǎn)一個(gè)冰箱
    Refrigerator createRefiger();
    //生產(chǎn)一個(gè)空調(diào)
    AirConditioning createAirConditioning();
    //生產(chǎn)一個(gè) TV
    TV createTV();
}

簡(jiǎn)單工廠是用一個(gè) DefaultFactory 完成了工廠所有的能力要求。但是現(xiàn)在我們的廠家變多了,有格力冰箱、海爾冰箱、海信冰箱等等,他們生產(chǎn)的冰箱或空調(diào)都不一樣,如果用簡(jiǎn)單工廠的話,就需要做區(qū)分,增加更多的方法,生產(chǎn)格力冰箱的,生產(chǎn)海爾冰箱的,非常的丑陋。

工廠方法模式,需要區(qū)分不同的工廠,這里我們創(chuàng)建格力工廠、海爾工廠和海信工廠。

public class GeliFactory implements MethodFactory {
    @Override
    public Refrigerator createRefiger() {
        return new GeliRefrigerator();
    }
    @Override
    public AirConditioning createAirConditioning() {
        return new GeliAirConditioning();
    }
    @Override
    public TV createTV() {
        return new GeliTV();
    }
}

格力工廠返回的是格力的空調(diào)、格力的冰箱以及格力的電視機(jī),海爾和海信也都會(huì)返回他們自己品牌的產(chǎn)品,這里就不貼他們的代碼了,類似。

這樣,我們的工廠方法對(duì)外提供了生產(chǎn)產(chǎn)品的能力,具體產(chǎn)生何種類型的產(chǎn)品,將由具體的工廠決定。這就是工廠方法模式,相信大部分人應(yīng)該都不陌生。

Logpack 中就有一個(gè)典型的工廠方法,工廠抽象類 ILoggerFactory:

public interface ILoggerFactory {
    Logger getLogger(String var1);
}

他有兩個(gè)具體的工廠實(shí)現(xiàn)這個(gè) getLogger 方法,

public class NOPLoggerFactory implements ILoggerFactory {
    public NOPLoggerFactory() {
    }
    public Logger getLogger(String name) {
        return NOPLogger.NOP_LOGGER;
    }
}
public class SubstituteLoggerFactory 
            implements ILoggerFactory {
    //省略
    public synchronized Logger getLogger(String name) {
        SubstituteLogger logger = (SubstituteLogger)this.loggers.get(name);
        if (logger == null) {
            logger = new SubstituteLogger(name, this.eventQueue, this.postInitialization);
            this.loggers.put(name, logger);
        }
        return logger;
    }//省略。。。。。
}

抽象工廠模式

抽象工廠模式可能不如前兩者常見(jiàn),但是確是為了補(bǔ)充前兩者的,有特定的場(chǎng)景。

想象這么一種情況,你使用了工廠方法模式,你的工廠提供的能力非常多,可以生產(chǎn)冰箱、電視、空調(diào)、洗衣機(jī)、電腦以及桌子等等,這樣你就會(huì)產(chǎn)生很多的工廠。

抽象工廠的作用就是在一定前提下,幫你分類這些工廠,比如按品牌分類,或者按照價(jià)格等級(jí)分類,這樣會(huì)大大縮減系統(tǒng)中的工廠數(shù)量。

這個(gè)前提就是你的這些工廠需要在兩個(gè)維度上具備共性:

專業(yè)術(shù)語(yǔ)就是『產(chǎn)品等級(jí)』和『產(chǎn)品族』兩個(gè)概念,說(shuō)人話就是,這些工廠需要至少具有兩個(gè)共性,比如都可以按照類型區(qū)分成三類,電視機(jī)、冰箱和空調(diào),也可以按照品牌區(qū)分成海爾、海信和 TCL。

這樣他們就具備抽象工廠的前提條件,你可以按照產(chǎn)品族合并工廠,正如上面使用到的例子一樣,工廠對(duì)外提供生產(chǎn)電視、冰箱和空調(diào)三種能力,而系統(tǒng)按品牌存在三個(gè)工廠,所以從準(zhǔn)確來(lái)說(shuō),在工廠方法中使用的例子其實(shí)也是加強(qiáng)版的抽象工廠模式

代碼例子就不舉例了,抽象工廠其實(shí)就是幫助減少系統(tǒng)的工廠數(shù)量的,但前提條件就是這些工廠要具備兩個(gè)及以上的共性。

希望你被面試官問(wèn)道工廠方法和抽象工廠的區(qū)別的時(shí)候,能想起這一句話。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产成年网站 | 最新理伦片eeuss影院 | 免费观看视频成人国产 | 视频日韩 | 日本免费久久 | h视频在线观看视频观看 | 国产情精品嫩草影院88av | 亚洲午夜天堂 | 中文字幕亚洲综合久久菠萝蜜 | 欧美亚洲风情 | 1插菊花 | 欧美中文字幕在线看 | 免费的黄视频 | 最新国产一区二区精品久久 | 偷偷狠狠的日日高清完整视频 | 国产va免费精品观看 | 99ri精品视频在线观看播放 | 国产精品一区二区久久不卡 | 久久成人国产精品青青 | 黄色片在线免费 | 免费人成网站线观看合集 | 91精品综合久久久久久五月天 | 国产成人在线免费视频 | www大片| 成人另类视频 | 色香蕉视频| 黄色一极毛片 | 成人免费视频无遮挡在线看 | 一本大道香蕉久97在线视频 | 国产福利小视频在线观看 | 日本在线观看一区二区三区 | 久久亚洲精品永久网站 | 特黄特a级特别特级特毛片 特黄特黄aaaa级毛片免费看 | 成人深夜福利 | 日韩精品亚洲一级在线观看 | 国产成人综合在线视频 | 两个黑人一前一后好爽 | a三级黄色片| 欧美老人另类视频 | 黄色免费一级播放片 | 国产精品久久久久久久 |