區(qū)別:簡(jiǎn)單工廠模式:用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的任意產(chǎn)品。對(duì)與增加新的產(chǎn)品,無(wú)能為力
工廠模式 :用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的固定產(chǎn)品。(支持增加任意產(chǎn)品) 抽象工廠 :用來(lái)生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品。(對(duì)于增加新的產(chǎn)品,無(wú)能為力;支持增加產(chǎn)品族)
以上三種工廠 方法在等級(jí)結(jié)構(gòu)和產(chǎn)品族這兩個(gè)方向上的支持程度不同。所以要根據(jù)情況考慮應(yīng)該使用哪種方法
適用范圍:
簡(jiǎn)單工廠模式:
工廠類負(fù)責(zé)創(chuàng)建的對(duì)象較少,客戶只知道傳入工廠類的參數(shù),對(duì)于如何創(chuàng)建對(duì)象不關(guān)心。
工廠方法模式:
當(dāng)一個(gè)類不知道它所必須創(chuàng)建對(duì)象的類或一個(gè)類希望由子類來(lái)指定它所創(chuàng)建的對(duì)象時(shí),當(dāng)類將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類中得某一個(gè),并且你希望將哪一個(gè)幫助子類是代理者這一信息局部化的時(shí)候,可以使用工廠方法模式。
抽象工廠模式:
一個(gè)系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實(shí)例何如被創(chuàng)建,組合和表達(dá)的細(xì)節(jié),這對(duì)于所有形態(tài)的工廠模式都是重要的。這個(gè)系統(tǒng)有多于一個(gè)的產(chǎn)品族,而系統(tǒng)只消費(fèi)其 中某一產(chǎn)品族。同屬于同一個(gè)產(chǎn)品族的產(chǎn)品是在一起使用的,這一約束必須在系統(tǒng)的設(shè)計(jì)中體現(xiàn)出來(lái)。系統(tǒng)提供一個(gè)產(chǎn)品類的庫(kù),所有的產(chǎn)品以同樣的接口出現(xiàn),從 而使客戶端不依賴于實(shí)現(xiàn)。
無(wú)論是簡(jiǎn)單工廠模式、工廠模式還是抽象工廠模式,它們本質(zhì)上都是將不變的部分提取出來(lái),將可變的部分留作接口,以達(dá)到最大程度上的復(fù)用。究竟用哪種設(shè)計(jì)模式更適合,這要根據(jù)具體的業(yè)務(wù)需求來(lái)決定。