如果簡單工廠是用來生產」東西「的,那任何」東西「的子類,比如汽車,自行車,輪船,洗髮水都是可以被生產的,但此處簡單工廠的壓力太大了啊,任何」東西「的子類都可以被生產,負擔太重,所以一般對簡單工廠類也有種稱呼,叫」上帝類「。於是我做了抽象工廠模式的思維導圖以加深理解而工廠方法模式就很好的減輕了工廠類的負擔,把某一類/某一種東西交由乙個工廠生產,同時增加某一類」東西「並不需要修改工廠類,只需要新增生產這類」東西「的工廠即可,使得工廠類符合開放-封閉原則。
對於」東西「的分類,有時候不能光是橫向的分類,從另乙個角度也是可以分類的,不知道這句話的意思能不能懂,打個比方:汽車可以根據品牌分為賓士、奧迪,也可以根據類別分為普通三廂車和suv車,如果用工廠方法來描述的話,賓士車工廠有乙個方法即生產賓士車,奧迪車工廠有乙個方法生產奧迪車,但在有多重分類的情形下,這樣寫已經不夠用,不符合實際了,這個時候需要用到抽象工廠模式,即奧迪車工廠有兩個方法,乙個方法是生產普通三廂奧迪車,另乙個方法是生產suv奧迪車。賓士車工廠有兩個方法,乙個方法是生產普通三廂賓士車,另乙個方法是生產suv賓士車。
上面即工廠方法模式和抽象工廠模式的應用場景,因為這兩者很像,所以概念上不容易區分,可以這麼說,工廠方法模式是一種極端情況的抽象工廠模式,而抽象工廠模式可以看成是工廠方法模式的一種推廣。
再說下抽象工廠模式,此處的抽象工廠介面應該是有兩個方法,乙個是生成普通三廂車,乙個是生產suv車,可以說,生產的」東西「已經被限定住了,因此你不能生產某品牌汽車外的其他」東西「,因而可以理解成使用抽象工廠模式不能新增新的」東西「(在簡單工廠和工廠方法中理論上都是可以新增任意」東西「的)
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...
工廠模式 抽象工廠模式
這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...
工廠模式 抽象工廠模式
子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...