工廠方式模式簡單工廠是用來封裝物件的建立,定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類
簡單工廠算不上是乙個設計模式,更趨向於是一種程式設計習慣,我們通過建立乙個工廠類,來封裝對物件的建立。
public class pizzastoreelse if(type.equals("greek"))else if(type.equals("pepperoni"))
pizza.prepare();
pizza.bake();
pizza.cut();
return pizza;}}
如上**,我們可以根據傳入的type來構造不同的物件,但是當我們需要去擴充套件的時候,不得不返回去修改原有的**,故我們將建立物件的這段**單獨拎出來,構造乙個新類專職去建立物件,我們稱這個物件為「工廠」,如下所示
public class ******pizzafactory else if (type.equals("pepperoni")) else if (type.equals("clam")) else if (type.equals("veggie"))
return pizza;
}}
public class pizzastore
public pizza orderpizza(string type)
}
也許有人會問,這樣做有什麼好處,我們把建立物件的交給了工廠進行管理,其他物件如果需要物件時,也可以使用這個工廠來進行物件建立,通過我們將簡單工廠裡的方法設定為靜態的方法
public static pizza createpizza(string type)
我們在呼叫的時候,就可以簡化**,直接使用類呼叫靜態方法。
public class pizzastore
}
使用靜態方法也有缺點,如果有子類,則無法通過繼承的方式來改變建立物件的方法。
簡單工廠,通過建立工廠類來封裝我們對物件的建立。
簡單工廠模式(三)
工廠模式,就是負責生成其他物件的類或方法。比如,我們有一些類,它們都繼承自交通工具類 inte ce vehicle class carimplements vehicle class ship implements vehicle class aircraft implements vehicle...
工廠三兄弟之簡單工廠模式(三)
為了將chart類的職責分離,同時將chart物件的建立和使用分離,sunny軟體公司開發人員決定使用簡單工廠模式對圖表庫進行重構,重構後的結構如圖2所示 在圖2中,chart介面充當抽象產品類,其子類histogramchart piechart和linechart充當具體產品類,chartfac...
工廠三兄弟之簡單工廠模式(三)
為了將chart 類的職責分離,同時將 chart 物件的建立和使用分離,sunny 軟體公司開發人員決定使用簡單工廠模式對圖表庫進行重構,重構後的結構如圖 2所示 圖2 圖表庫結構圖 在圖2中,chart介面充當抽象產品類,其子類histogramchart piechart和linechart充...