字節(jié)跳動飛書內(nèi)推!
北京、杭州、武漢、廣州、深圳、上海,六大城市等你來投。
感興趣的朋友可以私我咨詢&內(nèi)推,也可以通過鏈接直接投遞!
海量HC,極速響應(yīng),快來和我成為同事吧。
今日頭條、抖音、Tik Tok也可以內(nèi)推~
點擊進(jìn)入我的博客
2.3.1 抽象工廠模式簡介
- 抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和具有一般性的形態(tài)。
- “抽象”來自“抽象產(chǎn)品角色”,“抽象工廠”就是抽象產(chǎn)品角色的工廠。
- 抽象工廠模式與工廠方法模式最大的區(qū)別在于,工廠方法模式針對的是一個產(chǎn)品等級結(jié)構(gòu),而抽象工廠模式則需要面對多個產(chǎn)品等級結(jié)構(gòu)。
2.3.2 抽象工廠方式結(jié)構(gòu)

抽象工廠方式
- 抽象工廠(Creator)角色:擔(dān)任這個角色的是抽象方法模式的核心,它是與應(yīng)用程序無關(guān)的。
- 具體工廠(Concrete Creator)角色:具體工廠角色含有與業(yè)務(wù)密切相關(guān)的邏輯,并且受到應(yīng)用程序的調(diào)用以創(chuàng)建導(dǎo)出類。
- 抽象產(chǎn)品(Product)角色:抽象方法模式所創(chuàng)建的對象的超類,也就是所有產(chǎn)品對象的共同父類或共同擁有的接口。
- 具體產(chǎn)品(Concrete Product)角色:抽象工廠模式所創(chuàng)建的每一個對象都是某個具體產(chǎn)品角色的實例。
2.3.3 抽象工廠方式細(xì)節(jié)
抽象方法模式場景
- 一個系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)。這對于所有形態(tài)的工廠模式都是重要的;
- 一個系統(tǒng)的產(chǎn)品有多于一個的產(chǎn)品族,而系統(tǒng)只消費(fèi)其中某一族的產(chǎn)品;
- 同屬于同一個產(chǎn)品族的產(chǎn)品是在一起使用的,這一約束必須要在系統(tǒng)的設(shè)計中體現(xiàn)出來;
- 系統(tǒng)提供一個產(chǎn)品類的庫,所有的產(chǎn)品以同樣的接口出現(xiàn),從而使客戶端不依賴于實現(xiàn)。
抽象方法模式優(yōu)點
- 隔離了具體類的生成,使得用戶不需要知道什么被創(chuàng)建了。
- 當(dāng)一個產(chǎn)品族中的多個對象被設(shè)計成一起工作時,它能夠保證客戶端始終只使用同一個產(chǎn)品族中的對象。
抽象方法模式缺點
- 抽象工廠的接口確定了可以被創(chuàng)建的產(chǎn)品集合,所以難以擴(kuò)展抽象工廠以生成新種類的產(chǎn)品。
2.3.4 三種工廠模式總結(jié)
下面例子中,手機(jī)、電腦是抽象產(chǎn)品,蘋果、三星等是工廠。
簡單工廠模式
- 抽象產(chǎn)品叫手機(jī)
- 具體產(chǎn)品是蘋果手機(jī)、三星手機(jī)
- 工廠有一個生產(chǎn)手機(jī)的方法,可以根據(jù)傳入品牌是蘋果還是三星決定生產(chǎn)哪個品牌的手機(jī)
工廠方法模式
- 抽象產(chǎn)品叫手機(jī)
- 具體產(chǎn)品是蘋果手機(jī)、三星手機(jī)
- 抽象工廠叫手機(jī)工廠
- 具體工廠是蘋果手機(jī)工廠和三星手機(jī)工廠,分別生產(chǎn)蘋果手機(jī)和三星手機(jī)
抽象工廠模式
- 抽象產(chǎn)品叫手機(jī)、電腦
- 具體產(chǎn)品是蘋果手機(jī)、蘋果電腦、三星手機(jī)、三星電腦
- 抽象工廠叫手機(jī)電腦工廠,有兩個方法分別是生產(chǎn)手機(jī)和生產(chǎn)電腦
- 具體工廠是蘋果工廠和三星工廠,蘋果工廠的兩個方法分別生產(chǎn)蘋果手機(jī)和蘋果電腦,三星工廠的兩個方法分別生產(chǎn)三星手機(jī)和三星電腦