提供一個建立一系列或互相依賴對象的接口,而無需指定它們具體的類。
provide an interface for creating an families of related or dependent objects without specifying their concrete classes。

工廠方法模式的結構中包括四個角色。
+ 抽象産品(product):抽象類或接口,負責定義具體産品必須實作的方法。
+ 具體産品(concrete product):具體産品是一個類,如果product是一個抽象類,那麼具體産品是product的子類;如果product是一個接口,那麼具體産品去實作接口。
+ 構造者(creator):一個接口或者抽象類。構造者負責定義一個稱作工廠方法的抽象方法,該方法傳回具體産品類的執行個體。
+ 具體構造者(concrete creator):具體構造者重寫工廠方法使該方法傳回具體産品的執行個體。
抽象工廠模式可以為使用者建立一系列相關的對象,使使用者和建立這些對象的類脫耦。
使用抽象工廠模式可以友善的為使用者配置一系列對象。使用者使用不同的具體工廠就能得到一組相關的對象,同時也能避免使用者混到不同系列的對象中。
在抽象工廠模式中,可以随時增加“具體工廠”為使用者提供一組相關的對象。
系統需要為使用者提供多個對象,但不希望使用者直接使用new運算符執行個體化這些對象,即希望使用者和建立對象的類脫耦。
系統需要為使用者提供多個相關的對象,以便使用者聯合使用它們,但又不希望使用者來決定這些對象是如何關聯的。
系統需要為使用者提供一系列對象,但隻需要使用者知道這些對象有哪些方法可用,不需要使用者知道這些對象的建立過程。
<a href="https://github.com/androidwolf">mygithub</a>