標籤:style blog http color 使用 strong 2014 div
1、Factory 方法模式意圖:
定義一個用於建立對象的介面,讓子類決定執行個體化哪一個類。Factory Method使一個類的執行個體化延遲到其子類。
2、應用情境:
考慮一個榨汁機的應用情境。榨汁機可以用來製作蘋果汁、西瓜汁、橘汁等,即榨汁機可以用來製作水果汁。但是,夏天的冷飲店中,為了提高製作水果汁的效率和防止味道互串等情況,可能需要分別準備三個水果榨汁機,分別用來生產蘋果汁、西瓜汁、橘汁等。
3、Factory 方法模式類圖:
角色:
- Product:定義Factory 方法所建立對象。如情境描述中的果汁。
- ConcreteProduct:實現Product中的介面,定義具體化的產品。如情境描述中的蘋果汁、西瓜汁、橘汁等。
- Creator:用於聲明建立Product類型對象的Factory 方法。如情境中的榨汁機這一概念。
- ConcreteCreator:實現Creator中的Factory 方法,專門用於產生具體的產品ConcreteProduct。如情境中的蘋果榨汁機、西瓜榨汁機等。
協作:
- Creator依賴於它的子類來定義Factory 方法。
4、適用性:
Factory 方法模式跟原廠模式類似,其中Factory 方法模式適合於構造同屬於同一個類別的不同產品,所有的產品屬於同一個系列中。
5、執行個體:
5.1 執行個體類圖:
說明:店員(Waiter)使用不同的榨汁機來製作不同的水果汁,進而銷售給顧客。
5.2 Waiter類:
除了使用者類Waiter類之外,其他的類定義明了,故僅提供使用者類。
1 public class Waiter{2 3 public void sell(Juicer juicer){4 Juice juice = juicer.MakeJuice(); //使用傳入的特定的榨汁機來生產特定的水果汁5 6 //賣給顧客,收錢7 }8 9 }
6、特點
- 串連平行的類層次——Factory 方法的每個子類用於產生平行的不同的具體產品,工廠子類同具體產品平行關係。