简单工厂模式(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 没有你要的食物