关于简单工厂模式
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子类)。
浙公网安备 33010602011771号