摘要:不過怎么來說工廠方法模式是簡單工廠模式的升級版。其次,工廠模式是一種典型的解耦模式,迪米特法則在工廠模式中表現(xiàn)的尤為明顯。
工廠模式想必大家在開發(fā)過程中會經(jīng)常用到,顧名思義其就是作為一個(gè)工廠用來生產(chǎn)產(chǎn)品的,下面來簡單介紹幾種常見的工廠模式。
0x01 簡單工廠模式1、類圖結(jié)構(gòu)
2、角色分類
工廠類:其內(nèi)部具有一點(diǎn)的判斷邏輯,需要根據(jù)不同的邏輯去生產(chǎn)出不同的產(chǎn)品
抽象產(chǎn)品類:主要約定創(chuàng)建產(chǎn)品的標(biāo)準(zhǔn)
具體產(chǎn)品類:繼承抽象產(chǎn)品類實(shí)現(xiàn)其標(biāo)準(zhǔn)接口提供具體產(chǎn)品的創(chuàng)建邏輯
0x02 工廠方法模式1、類圖結(jié)構(gòu)
2、角色分類
抽象工廠類:提供一個(gè)工廠加工的標(biāo)準(zhǔn)
具體工廠類:實(shí)現(xiàn)抽象工廠加工的標(biāo)準(zhǔn),具體調(diào)用具體產(chǎn)品的相關(guān)方法進(jìn)行產(chǎn)品的創(chuàng)建
抽象產(chǎn)品類:主要約定創(chuàng)建產(chǎn)品的標(biāo)準(zhǔn)
具體產(chǎn)品類:繼承抽象產(chǎn)品類實(shí)現(xiàn)其標(biāo)準(zhǔn)接口提供具體產(chǎn)品的創(chuàng)建邏輯
0x03 建造者模式1、類圖結(jié)構(gòu)
2、角色分類
指揮者:主要控制建造者建造出來的各個(gè)零散部分進(jìn)行安裝,生產(chǎn)產(chǎn)品
抽象建造者:定義建造者的各個(gè)零件的構(gòu)建標(biāo)準(zhǔn)
具體建造者:對產(chǎn)品的各個(gè)部分進(jìn)行加工
具體產(chǎn)品類:待創(chuàng)建的產(chǎn)品類
0x04 工廠模式對比既然我們?nèi)粘J褂眠^程中會出現(xiàn)這么多的工廠模式,到底他們之間有什么異同呢?或許你從編排也能看出來我們是從簡單工廠模式、工廠方法模式、建造者模式,他們對產(chǎn)品的創(chuàng)建也是逐步逐步變得越來越復(fù)雜的。
1、工廠方法模式和簡單工廠模式相比多了一個(gè)抽象工廠類,這其中有什么好處呢?
主要的原則還是:修改關(guān)閉、擴(kuò)展開放
設(shè)想一下如果我們需要增加一個(gè)產(chǎn)品,這個(gè)時(shí)候簡單工廠模式是需要進(jìn)入到工廠類中去修改才能實(shí)現(xiàn)擴(kuò)展,而如果通過工廠方法模式的方式增加產(chǎn)品只需要擴(kuò)展抽象工廠方法就可以實(shí)現(xiàn)一個(gè)工廠類來創(chuàng)建新產(chǎn)品,當(dāng)然代價(jià)就是會增加一個(gè)工廠類,如果產(chǎn)品過多會出現(xiàn)工廠類爆炸。不過怎么來說工廠方法模式是簡單工廠模式的升級版。
2、工廠方法模式和建造者模式之間又是個(gè)什么關(guān)系呢?
其實(shí)建造者模式就是比工廠方法模式多了一個(gè)“指揮者”,工廠方法模式是將一個(gè)產(chǎn)品創(chuàng)建出來供客戶端使用,而建造者模式是將產(chǎn)品的各個(gè)組成部分建造出來然后交由“指揮者”去進(jìn)行組裝而形成最終的產(chǎn)品。建造者模式適用于要生產(chǎn)的產(chǎn)品足夠復(fù)雜,所以采用了遞歸構(gòu)造的方式進(jìn)行構(gòu)造。
想必大家在編程的過程中都是使用建造者模式進(jìn)行對象的構(gòu)建了吧
0x05 適用范圍0x06 后記不管是簡單工廠模式,工廠方法模式還是抽象工廠模式,他們具有類似的特性,所以他們的適用場景也是類似的。
首先,作為一種創(chuàng)建類模式,在任何需要生成復(fù)雜對象的地方,都可以使用工廠方法模式。有一點(diǎn)需要注意的地方就是復(fù)雜對象適合使用工廠模式,而簡單對象,特別是只需要通過new就可以完成創(chuàng)建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個(gè)工廠類,會增加系統(tǒng)的復(fù)雜度。
其次,工廠模式是一種典型的解耦模式,迪米特法則在工廠模式中表現(xiàn)的尤為明顯。假如調(diào)用者自己組裝產(chǎn)品需要增加依賴關(guān)系時(shí),可以考慮使用工廠模式。將會大大降低對象之間的耦合度。
再次,由于工廠模式是依靠抽象架構(gòu)的,它把實(shí)例化產(chǎn)品的任務(wù)交由實(shí)現(xiàn)類完成,擴(kuò)展性比較好。也就是說,當(dāng)需要系統(tǒng)有比較好的擴(kuò)展性時(shí),可以考慮工廠模式,不同的產(chǎn)品用不同的實(shí)現(xiàn)工廠來組裝。
我想有類圖了就不要繼續(xù)貼示例了吧,工廠模式先到這里,后面繼續(xù)深入刻畫。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65275.html
摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計(jì)是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因?yàn)樗械木唧w工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式 1.簡單工廠模式 簡單工廠模式:又稱為靜態(tài)工廠方法...
摘要:二簡單工廠模式組成工廠類工廠模式的核心,通過調(diào)用它來實(shí)現(xiàn)其他類的功能。三工廠方法模式利用工廠方法模式可以有效解決簡單工廠模式破壞開閉原則的問題。 一、概念 1、工廠模式分為三類:(1)簡單工廠模式:一個(gè)工廠創(chuàng)建所有產(chǎn)品(2)工廠方法模式:一個(gè)工廠方法創(chuàng)建一個(gè)產(chǎn)品(3)抽象工廠模式:一個(gè)工廠方法創(chuàng)建一類產(chǎn)品 2、創(chuàng)建型模式這種模式是指將實(shí)例的創(chuàng)建和使用分離開來,隱藏類實(shí)例的創(chuàng)建細(xì)節(jié),外界...
摘要:簡單工廠,工廠模式和抽象工廠。不要認(rèn)為簡單工廠是用就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。 工廠模式,實(shí)際上也會根據(jù)業(yè)務(wù)情景不同會有不同的實(shí)現(xiàn)方式。一般分為3種。簡單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡單到抽象,名稱越來越高大上,實(shí)現(xiàn)方式肯定是越來越復(fù)雜 結(jié)論1:三種工廠的實(shí)現(xiàn)越來越復(fù)雜 簡單工廠 public class Factory { // 定義...
摘要:我認(rèn)為按書上的順序比較好理解因?yàn)楹唵戊o態(tài)工廠模式是在工廠方法模式上縮減,抽象工廠模式是在工廠方法模式上再增強(qiáng)。所以我就先講工廠方法模式了。抽象工廠模式抽象工廠模式就比較復(fù)雜了,我們一般的應(yīng)用都寫不到。 前言 只有光頭才能變強(qiáng) 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 單例模式你會幾種寫法? 昨天寫了單例模式了,今天是時(shí)候?qū)懝S模式啦~ 工廠模式我個(gè)人認(rèn)為其實(shí)比...
摘要:工廠方法模式工廠方法模式是為了克服簡單工廠模式的缺點(diǎn)。抽象工廠模式抽象工廠模式主要在于應(yīng)對新系列的需求變化。此時(shí)架構(gòu)便可以升級為工廠方法模式。 在面向?qū)ο缶幊讨袆?chuàng)建一個(gè)對象通常通過new關(guān)鍵字來創(chuàng)建,但是往往在一些業(yè)務(wù)場景下,個(gè)別對象是一個(gè)比較復(fù)雜的bean。此時(shí)創(chuàng)建對象不光是new了,還需要一些額外的操作,比如填充數(shù)據(jù),附屬對象的準(zhǔn)備等等。如果我們想要得到這樣的一個(gè)對象,直接簡單粗暴...
閱讀 3171·2021-11-19 09:40
閱讀 3663·2021-11-16 11:52
閱讀 2988·2021-11-11 16:55
閱讀 3186·2019-08-30 15:55
閱讀 1191·2019-08-30 13:08
閱讀 1663·2019-08-29 17:03
閱讀 3020·2019-08-29 16:19
閱讀 2587·2019-08-29 13:43