設(shè)計模式2.3 抽象工廠模式

字節(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é)

抽象方法模式場景
  1. 一個系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié)。這對于所有形態(tài)的工廠模式都是重要的;
  2. 一個系統(tǒng)的產(chǎn)品有多于一個的產(chǎn)品族,而系統(tǒng)只消費(fèi)其中某一族的產(chǎn)品;
  3. 同屬于同一個產(chǎn)品族的產(chǎn)品是在一起使用的,這一約束必須要在系統(tǒng)的設(shè)計中體現(xiàn)出來;
  4. 系統(tǒng)提供一個產(chǎn)品類的庫,所有的產(chǎn)品以同樣的接口出現(xiàn),從而使客戶端不依賴于實現(xiàn)。
抽象方法模式優(yōu)點
  1. 隔離了具體類的生成,使得用戶不需要知道什么被創(chuàng)建了。
  2. 當(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ī)和三星電腦
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字節(jié)跳動飛書內(nèi)推!北京、杭州、武漢、廣州、深圳、上海,六大城市等你來投。感興趣的朋友可以私我咨詢&內(nèi)推,也可以通過...
    盧卡斯嗶嗶嗶閱讀 714評論 0 3
  • 設(shè)計模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計原則時需要注意以下幾點:a) 高內(nèi)聚、低耦合和單一職能的“沖突”實際上,這兩者...
    彥幀閱讀 3,888評論 0 14
  • 前言 關(guān)于設(shè)計模式,是一個永遠(yuǎn)說不完的也說不清的話題。畢竟在編程的世界里,沒有最好的設(shè)計模式,只有最合適的設(shè)計模式...
    VV木公子閱讀 1,740評論 0 9
  • 在講解抽象工廠前我們首先需要了解兩個概念: 產(chǎn)品等級結(jié)構(gòu):產(chǎn)品的等級結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu)。如果一個抽象類是電視機(jī),...
    41uLove閱讀 608評論 0 1
  • 工廠方法模式通過引入工廠等級結(jié)構(gòu),解決了簡單工廠模式中工廠類職責(zé)太重的問題,但由于工廠方法模式中的每個工廠只生產(chǎn)一...
    justCode_閱讀 1,296評論 1 6

友情鏈接更多精彩內(nèi)容