簡單工廠模式(Simple Factory),說他簡單是因為我們可以將此模式比作一個簡單的民間作坊,他們只有固定的生產線生產固定的產品。也可以稱他為靜態工廠設計模式,類似於之前提到過靜態代理設計模式,一條生產線生產一種產品(一個代理代理一種業務),為了方便大家理解,我們將KFC比作一個簡單的工廠,實現代碼如下:
1 //建造接口(或者抽象類)提供食物生產方法 2 interface Food{ 3 public abstract void get(); 4 } 5 //漢堡類(後廚生產線)來實現食物生產方法 6 class Hamburger implements Food{ 7 public void get(){ 8 System.out.println("漢堡來了"); 9 } 10 } 11 //炸雞類(後廚生產線)來實現食物生產方法 12 class Chicken implements Food{ 13 public void get(){ 14 System.out.println("炸雞來了"); 15 } 16 } 17 //KFC(靜態工廠類) 18 class KFC{ 19 //提供獲取食物的方法(傳入的參數name為食客所點食物) 20 public static Food getFood(String name){ 21 /*如果所點食物是炸雞/漢堡(見名知義) 22 *則實例化該生產線(通知對應後廚生產線) 23 */ 24 if(name.equals("炸雞")){ 25 return new Chicken(); 26 } 27 if(name.equals("漢堡")){ 28 return new Hamburger(); 29 } 30 return null; 31 } 32 } 33 //測試類 34 public class Test{ 35 public static void main(String[] args){ 36 KFC kfc = new KFC();//實例化KFC 37 Food m = kfc.getFood("炸雞"); 38 Food n = kfc.getFood("hanbao");//輸入的字符串不符合工廠類對應值 39 try{ 40 m.get(); 41 n.get(); 42 //添加異常處理(如果沒有對應生產線則提示異常處理結果) 43 }catch(NullPointerException e){ 44 System.out.print("沒有你要的食物"); 45 } 46 } 47 }
輸出結果:
1 炸雞來了 2 沒有你要的食物