工廠模式的特點(diǎn)是蟆盹,根據(jù)客戶的要求刃泡,創(chuàng)建出不同的產(chǎn)品(也就是實(shí)例對(duì)象)巧娱,而客戶不需要知道產(chǎn)生的細(xì)節(jié)。
一烘贴、簡(jiǎn)單工廠模式
缺點(diǎn):
- 工廠類只有一個(gè)禁添,它包含了所有產(chǎn)品的創(chuàng)建邏輯,以后如果擴(kuò)展桨踪,就需要修改這個(gè)工廠類老翘。
二、工廠方法模式
根據(jù)圖可以看出锻离,首先有一個(gè)抽象類铺峭,它不做具體的工作,而是由它的子類去實(shí)現(xiàn)功能汽纠,不同的子類工廠生產(chǎn)不同的產(chǎn)品卫键。所以客戶要想用使用具體的產(chǎn)品,需要指定具體的工廠來生產(chǎn)虱朵。
特點(diǎn):
降低了工廠類的內(nèi)聚莉炉,又很好的符合了面向?qū)ο笤O(shè)計(jì)中的單一職責(zé)原則啤呼,這樣有利于程序的拓展。
三呢袱、抽象工廠模式
每個(gè)抽象工廠派生多個(gè)具體工廠類,每個(gè)具體工廠負(fù)責(zé)多個(gè)(一系列產(chǎn)品簇)具體產(chǎn)品的實(shí)例創(chuàng)建翅敌。
首先看一幅圖
首先要弄懂一個(gè)產(chǎn)品簇和一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)的概念羞福。一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu),指的是繼承自同一個(gè)產(chǎn)品抽象類的 產(chǎn)品類蚯涮,比如聯(lián)想手機(jī)治专、iPhone都是繼承自手機(jī)抽象類,它們就屬于一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)遭顶。而電腦又是一個(gè)產(chǎn)品等級(jí)結(jié)構(gòu)张峰,里邊分聯(lián)想、mac棒旗。這時(shí)候喘批,產(chǎn)品簇的概念就來了,mac和iPhone都是 iOS系統(tǒng)的铣揉,它們可以被劃分為同一個(gè)產(chǎn)品簇里饶深。
總結(jié):從簡(jiǎn)單工廠模式到工廠模式,再到抽象工廠模式逛拱〉欣澹可以看到整個(gè)模式的一步步演進(jìn)。簡(jiǎn)單工廠模式在產(chǎn)品多樣之后朽合,整個(gè)工廠將會(huì)變得臃腫而難以維護(hù)俱两。于是我們將簡(jiǎn)單工廠模式中的工程做了抽象處理,這樣每種產(chǎn)品對(duì)應(yīng)一個(gè)工廠曹步。這樣無疑會(huì)增加代碼量宪彩。但是好處是顯而易見的,單獨(dú)讓一個(gè)工廠處理一種產(chǎn)品會(huì)讓邏輯變得好維護(hù)箭窜。但是這樣還不夠毯焕,因?yàn)樵黾有碌钠奉悾蜁?huì)產(chǎn)生新的類磺樱,對(duì)于調(diào)用者來說纳猫,處理太多具有相同接口的類顯然是不合算的。于是竹捉,我們使用抽象工廠模式來解決這個(gè)問題芜辕。我們讓抽象工廠內(nèi)部做一個(gè)封裝,用以隱藏真正的具體工廠块差。這樣侵续,對(duì)于調(diào)用者來說倔丈,即時(shí)內(nèi)部增加了新的產(chǎn)品,你也是不知道的状蜗。