抽象工廠模式
回顧工廠方法設(shè)計(jì)模式的不足:具體產(chǎn)品增加時(shí),系統(tǒng)中類的個(gè)數(shù)將成對(duì)增加,在一定程度上增加了系統(tǒng)的復(fù)雜度
一、模式動(dòng)機(jī)
- 產(chǎn)品等級(jí)結(jié)構(gòu):產(chǎn)品等級(jí)結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),即抽象產(chǎn)品與具體產(chǎn)品
- 產(chǎn)品族:在抽象工廠模式中,產(chǎn)品族是指由同一個(gè)工廠生產(chǎn)的,位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中的一組產(chǎn)品
二、模式定義
提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對(duì)象創(chuàng)建型模式。
三、模式結(jié)構(gòu)
四、案例實(shí)現(xiàn)
案例背景
電視機(jī)、空調(diào)工廠,不同品牌的電視和空調(diào)
案例結(jié)構(gòu)
代碼實(shí)現(xiàn)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-433476.html
五、模式分析
將產(chǎn)品按照產(chǎn)品等級(jí)結(jié)構(gòu)劃分,將工廠按照產(chǎn)品族劃分文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433476.html
六、總結(jié)
模式優(yōu)點(diǎn)
- 隔離了具體類的生成,使得客戶端并不需要知道什么被創(chuàng)建
- 當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能夠保證客戶端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象
- 增加新的產(chǎn)品族很方便,無(wú)須修改已有系統(tǒng),符合開(kāi)閉原則
模式缺點(diǎn)
- 增加新的產(chǎn)品等級(jí)結(jié)構(gòu)麻煩,需要對(duì)原有系統(tǒng)進(jìn)行較大的修改,甚至需要修改抽象層代碼,這顯然會(huì)帶來(lái)較大的不便,違背了開(kāi)閉原則
模式應(yīng)用情形
- 一個(gè)系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實(shí)例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)
- 系統(tǒng)中有多于一個(gè)的產(chǎn)品族,但每次只使用其中某一產(chǎn)品族
- 屬于同一個(gè)產(chǎn)品族的產(chǎn)品將在一起使用,這一約束必須在系統(tǒng)的設(shè)計(jì)中體現(xiàn)出來(lái)
- 產(chǎn)品等級(jí)結(jié)構(gòu)穩(wěn)定,在設(shè)計(jì)完成之后不會(huì)向系統(tǒng)中增加新的產(chǎn)品等級(jí)結(jié)構(gòu)或者刪除已有的產(chǎn)品等級(jí)結(jié)構(gòu)
到了這里,關(guān)于抽象工廠模式(Abstract Factory Pattern)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!