簡單工廠模式(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 沒有你要的食物