抽象工廠(chǎng)模式的優(yōu)點(diǎn)有:1、抽象工廠(chǎng)模式隔離了具體類(lèi)的生產(chǎn),使得客戶(hù)并不需要知道什么被創(chuàng)建;2、當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能保證客戶(hù)端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象。
優(yōu)點(diǎn):
1、抽象工廠(chǎng)模式隔離了具體類(lèi)的生產(chǎn),使得客戶(hù)并不需要知道什么被創(chuàng)建。
2、當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能保證客戶(hù)端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象。
3、增加新的具體工廠(chǎng)和產(chǎn)品族很方便,無(wú)須修改已有系統(tǒng),符合“開(kāi)閉原則”
適用場(chǎng)景
當(dāng)需要?jiǎng)?chuàng)建的對(duì)象是一系列相互關(guān)聯(lián)或相互依賴(lài)的產(chǎn)品族時(shí),便可以使用抽象工廠(chǎng)模式。說(shuō)的更明白一點(diǎn),就是一個(gè)繼承體系中,如果存在著多個(gè)等級(jí)結(jié)構(gòu)(即存在著多個(gè)抽象類(lèi)),并且分屬各個(gè)等級(jí)結(jié)構(gòu)中的實(shí)現(xiàn)類(lèi)之間存在著一定的關(guān)聯(lián)或者約束,就可以使用抽象工廠(chǎng)模式。假如各個(gè)等級(jí)結(jié)構(gòu)中的實(shí)現(xiàn)類(lèi)之間不存在關(guān)聯(lián)或約束,則使用多個(gè)獨(dú)立的工廠(chǎng)來(lái)對(duì)產(chǎn)品進(jìn)行創(chuàng)建,則更合適一點(diǎn)。
總結(jié)
無(wú)論是簡(jiǎn)單工廠(chǎng)模式,工廠(chǎng)方法模式,還是抽象工廠(chǎng)模式,他們都屬于工廠(chǎng)模式,在形式和特點(diǎn)上也是極為相似的,他們的最終目的都是為了解耦。在使用時(shí),我們不必去在意這個(gè)模式到底工廠(chǎng)方法模式還是抽象工廠(chǎng)模式,因?yàn)樗麄冎g的演變常常是令人琢磨不透的。經(jīng)常你會(huì)發(fā)現(xiàn),明明使用的工廠(chǎng)方法模式,當(dāng)新需求來(lái)臨,稍加修改,加入了一個(gè)新方法后,由于類(lèi)中的產(chǎn)品構(gòu)成了不同等級(jí)結(jié)構(gòu)中的產(chǎn)品族,它就變成抽象工廠(chǎng)模式了;而對(duì)于抽象工廠(chǎng)模式,當(dāng)減少一個(gè)方法使的提供的產(chǎn)品不再構(gòu)成產(chǎn)品族之后,它就演變成了工廠(chǎng)方法模式。
所以,在使用工廠(chǎng)模式時(shí),只需要關(guān)心降低耦合度的目的是否達(dá)到了。