关于简单工厂模式

 1 /**
 2 使用简单工厂,根据客户端输入的具体的参数返回不同的产品对象(同一个接口或抽象类)。
 3 优点:客户端不再负责对象的创建,而是把创建的工作交给了工厂类,客户端只负责调用,从而明确了各个类的职责。
 4 缺点:每增加一个新的产品,都需要修改逻辑以返回这个产品,违反了OO的封闭修改,开放扩展的原则。
 5 */
 6 interface Nokia{        //定义接口
 7     void description();            //定义抽象方法
 8 }
 9 
10 class N97 implements Nokia{        //定义子类实现接口
11 
12     public void description(){                //实现接口的方法    
13         System.out.println("这是一款N97手机");
14     }
15 }
16 
17 class N5230 implements Nokia{    //定义子类实现接口
18     
19     public void description(){                //实现接口的方法
20         System.out.println("这是一款5230手机");
21     }
22 }
23 24 
25 class SimpleFactory{        //创建简单工厂类
26     public static Nokia getInstance(PhoneType type) throws Exception{
27         //判断逻辑,返回具体的产品对象给客户端
28         switch(type){
29             case N97:
30                 return new N97();
31             case N5230:
32                 return new N5230();
33             default:
34                 throw new Exception("该工厂中没有找到你需要的实例");  //没有匹配的对象则抛出异常。
35         }
36     
37 
38     }
39 }
40 
41 enum PhoneType{    //返回各个对象的参数的枚举
42     N97,
43     N5230
44     }
45 
46 public class SimpleFactoryDemo{
47     public static void main(String args[]){
53         try{
54         Nokia nokia=SimpleFactory.getInstance(PhoneType.N97);    
55         nokia.description();
56         }
57         catch(Exception e){
58             System.out.println(e);
59         }
60     }
61 }

上面的代码输出结果为:这是一款N97手机。

总结:简单工厂只有一个具体工厂类(本例中的SimpleFactory类)来创建一种基类(本例中的Nokia接口)的多个不同派生类(本例中的N97、N5230子类)。

posted on 2012-10-14 19:36  百零八1900  阅读(118)  评论(0)    收藏  举报

导航