在工廠模式中,具體工廠負責生產具體的產品,每乙個具體工廠對應一種具體的產品,但有的時候,我們需要乙個工廠可以生產多種產品。為了闡述的更加清晰明了,首先引入兩個抽象工廠模式中概念:產品等級結構和產品族
提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類,抽象工廠模式也叫kit模式。其實也很簡單,就是在工廠模式的基礎上進行了增強,讓其更加具有通用性,一般性。工廠模式中工廠類只負責一種產品的建立工作,在抽象工廠模式中,乙個工廠可以生產多種產品,這些產品都屬於同乙個產品族。
工廠模式主要由以下四部分組成:
抽象工廠:抽象出工廠所需屬性或行為,如ifactory
具體工廠:具體的某個工廠類,負責建立某個具體的產品,如benzfactory,bmwfactory
抽象產品:抽象出產品所需屬性或行為,icar,ibike
具體產品:具體的某個產品,如benzcar,bmwcar,benzbike,bmwbike
抽象工廠類
具體工廠類public
inte***ce ifactory
public
class
benzfactory
implements
ifactory
@override
public ibike createbike()
}
抽象產品類public
class
bmwfactory
implements
ifactory
@override
public ibike createbike()
}
public
inte***ce icar
具體產品類public
inte***ce ibike
public
class
bmwbike
implements
ibike
}
public
class
bmwcar
implements
icar
}
public
class
benzbike
implements
ibike
}
客戶端測試類public
class
benzcar
implements
icar
}
執行客戶端測試類,輸出為public
class client
}
根據抽象模式的優缺點可以看出,增加產品族是無需修改已有**的,很好的支援了開閉原則,但新增新的產品等級結構時,則需要修改抽象工廠類及其子類,違背了開閉原則。抽象工廠模式這種性質我們成為「開閉原則的傾斜性」賓士car
賓士bike
寶馬car
寶馬bike
抽象工廠模式稍微要比工廠模式複雜一些,但其實也複雜不了多少。簡單理解下,無非就是工廠模式中的工廠只生產一種產品,而抽象工廠模式中的工廠是生產多個產品,即乙個產品族。
建立型設計模式之抽象工廠模式
在前面已經講解過工廠方法模式,這倆者有什麼區別呢?前面所說的工廠方法模式只會生產一種具體的產品,而抽象工廠模式生產出來的產品是不確定的。例如不同作業系統中控制項的實現不一樣,展示效果也不一樣,對於作業系統如android,ios,windowphone本身構成乙個產品類,而其控制項如button,t...
設計模式 建立型 抽象工廠模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客...
設計模式 建立型 抽象工廠模式
有點複雜。一般的工廠模式下,每個實體類都需要乙個對應的工廠,當實體類過多時工廠的數量也會變多。當實體類還有子類時,我們需要的工廠就更多了。抽象工廠模式是將所有工廠的共性抽象出來 public inte ce animalfactory 生產母狗和母貓 public class femaleanima...