定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。factory method使一個類的執行個體化延遲到其子類。
define an interface for creating an object, but let subclasses decide which class to instantiate. factory method lets a class defer instantiation to subclasses.

工廠方法模式的結構中包括四個角色。
+ 抽象産品(product):抽象類或接口,負責定義具體産品必須實作的方法。
+ 具體産品(concrete product):具體産品是一個類,如果product是一個抽象類,那麼具體産品是product的子類;如果product是一個接口,那麼具體産品去實作接口。
+ 構造者(creator):一個接口或者抽象類。構造者負責定義一個稱作工廠方法的抽象方法,該方法傳回具體産品類的執行個體。
+ 具體構造者(concrete creator):具體構造者重寫工廠方法使該方法傳回具體産品的執行個體。
使用工廠模式可以讓使用者的代碼和某個特定類的子類的代碼解耦。
工廠方法的使用使用者不必知道它所使用的對象是怎麼被建立的,隻需要知道該對象有哪些方法即可。
使用者需要一個類的子類的執行個體,但不希望與該類的子類形成耦合。
使用者需要一個類的子類的執行個體,但使用者不知道該類有哪些子類可用。
<a href="https://github.com/androidwolf">mygithub</a>