抽象工廠模式

2021-07-28 04:47:26 字數 875 閱讀 7507

如果簡單工廠是用來生產」東西「的,那任何」東西「的子類,比如汽車,自行車,輪船,洗髮水都是可以被生產的,但此處簡單工廠的壓力太大了啊,任何」東西「的子類都可以被生產,負擔太重,所以一般對簡單工廠類也有種稱呼,叫」上帝類「。

而工廠方法模式就很好的減輕了工廠類的負擔,把某一類/某一種東西交由乙個工廠生產,同時增加某一類」東西「並不需要修改工廠類,只需要新增生產這類」東西「的工廠即可,使得工廠類符合開放-封閉原則。

對於」東西「的分類,有時候不能光是橫向的分類,從另乙個角度也是可以分類的,不知道這句話的意思能不能懂,打個比方:汽車可以根據品牌分為賓士、奧迪,也可以根據類別分為普通三廂車和suv車,如果用工廠方法來描述的話,賓士車工廠有乙個方法即生產賓士車,奧迪車工廠有乙個方法生產奧迪車,但在有多重分類的情形下,這樣寫已經不夠用,不符合實際了,這個時候需要用到抽象工廠模式,即奧迪車工廠有兩個方法,乙個方法是生產普通三廂奧迪車,另乙個方法是生產suv奧迪車。賓士車工廠有兩個方法,乙個方法是生產普通三廂賓士車,另乙個方法是生產suv賓士車。

上面即工廠方法模式和抽象工廠模式的應用場景,因為這兩者很像,所以概念上不容易區分,可以這麼說,工廠方法模式是一種極端情況的抽象工廠模式,而抽象工廠模式可以看成是工廠方法模式的一種推廣。

再說下抽象工廠模式,此處的抽象工廠介面應該是有兩個方法,乙個是生成普通三廂車,乙個是生產suv車,可以說,生產的」東西「已經被限定住了,因此你不能生產某品牌汽車外的其他」東西「,因而可以理解成使用抽象工廠模式不能新增新的」東西「(在簡單工廠和工廠方法中理論上都是可以新增任意」東西「的)

於是我做了抽象工廠模式的思維導圖以加深理解

抽象工廠模式 抽象工廠模式

抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...

工廠模式 抽象工廠模式

這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...

工廠模式 抽象工廠模式

子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...