簡單工廠模式
工廠,生產產品的場所。比如農夫山泉工廠,生產農夫山泉礦泉水、茶π等飲料。礦泉水和茶π都屬於飲料,都具有解渴的功能,但是每種飲料給人的感覺是不一樣的。礦泉水和茶π在Java中相當於子類,飲料相當於父類。
簡單工廠模式,又叫靜態工廠模式,在Java中專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。我們將水果園比作一個工廠,可以生產蘋果,香蕉等水果。每一個蘋果或香蕉都是一個實例,他們的父類都是水果。
下面用Java語言實現簡單工廠模式
2.創建Fruit接口、Apple類和Banana類
Fruit(interface):
//水果類 public interface Fruit { public void get(); }
Apple類:
//蘋果類 public class Apple implements Fruit{ //實現並重寫父類的get()方法 public void get() { System.out.println("采集蘋果"); } }
Banana類:
//香蕉類 public class Banana implements Fruit{ //實現並重寫父類的get()方法 public void get() { System.out.println("采集香蕉"); } }
3.創建水果園,即工廠類,來生產各種水果
FruitFactory:
注意:這里將工廠類和所創建的子類放在同一個包中,方便調用。
package simpleFactory; //水果園,水果工廠類 public class FruitFactory { /** * @param 不同水果的類名稱 * @return 水果類 */ public static Fruit getFruit(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException { /*這里通過反射的方式獲取到水果子類的字節碼,即類對象,通過類對象的newInstance()方法創建水果子類 實例*/ Class fruit = Class.forName(FruitFactory.class.getPackage().getName()+"."+type); return (Fruit) fruit.newInstance(); } }
4.現在開始生產水果,創建實例,我們另外建立一個類
MainClass:
package simpleFactory; public class MainClass { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { //通過調用工廠類的靜態方法getFruit,創建水果的子類實例。 Fruit apple = FruitFactory.getFruit("Apple"); Fruit banana = FruitFactory.getFruit("Banana"); apple.get(); banana.get(); } }
5.結果:
6.總結: