1.簡單:簡單工廠類裏最重要的創建物體的方法。把創建對象的細節封裝到一個單獨的類中,當需要增加或刪除時修改此類即可。
如下圖所示,其實就是把 createPizza方法從PizzaStore類中分離開到一個單獨的類中,這個類SimpleFactory類就是簡單工廠類。
2.中等:把對象的創建委託給子類,子類實現工廠方法(也就是createPizza方法)來創建對象。
createPizza放到對應的子類中實現了。子類PizzaStore 根據 傳入pizza類型參數 實現具體的createPizza。
Pizza的子類也增加爲”Style“ + ”Type“的組合。
3.複雜:考慮如何生成不同Style和不同Type的Pizza。假設其根本原因在於其原料的不同,所以在Pizza類中增加一個 原料工廠類成員。
工廠原料類:創建相關的對象家族的產品。createProduct() 而不是 create(Product)。
而這個原料工廠類具體是什麼,由上一層具體的PizzaStore來指定。
比如NYPizzaStore,指定製作Pizza的原料用NYPizzaIngredientFactory。
總之,所有的工廠方法都是用來封裝對象的創建。
參考:《headfirst設計模式》