动态工厂模式代码实例
package net.esrib.Factory; interface Car{ //车的接口类 public void run(); public void stop(); } class Benz implements Car{ //奔驰车类 public void run(){ System.out.print("Benz 开动了。。。"); } public void stop(){ System.out.print("Benz 停车了。。。"); } } class Ford implements Car{ //福特车类 public void run(){ System.out.print("Ford 开动了。。。"); } public void stop(){ System.out.print("Ford 停车了。。。"); } } class BigBus implements Car{ //大巴车类 public void run(){ System.out.print("大巴车 开动了。。。"); } public void stop(){ System.out.print("大巴车 停车了。。。"); } } class MiniBus implements Car{ //小巴车类 public void run(){ System.out.print("小巴车 开动了。。。"); } public void stop(){ System.out.print("小巴车 停车了。。。"); } } interface AbstractFactory{ //只是一个概念,没有任何方法 } class CarFactory implements AbstractFactory{//造小汽车的工厂 public Car getCar(String type){ Car c=null; try { //通过JAVA的反射机制实例化实现类,给出完整的 “包.类”名称 //这里要类型转换 c=(Car)Class.forName("net.esrib.Factory.FactoryDemo02."+type).newInstance(); } catch (ClassNotFoundException ex) { } catch (IllegalAccessException ex) { } catch (InstantiationException ex) { } return c; } } class BusFactory implements AbstractFactory{//造巴士汽车的工厂 public Car getBus(String type){ Car c=null; try { //通过JAVA的反射机制实例化实现类,给出完整的 “包.类”名称 //这里要类型转换 c=(Car)Class.forName("net.esrib.Factory.FactoryDemo02."+type).newInstance(); } catch (ClassNotFoundException ex) { } catch (IllegalAccessException ex) { } catch (InstantiationException ex) { } return c; } } public class FactoryDemo02 { public static void main(String [] args){ //生产小汽车 /* CarFactory cf=new CarFactory(); Car c=null; c=cf.getCar("Ford"); c.run(); c.stop(); */ // 生产巴士汽车 BusFactory bf=new BusFactory(); Car c=null; c=bf.getBus("BigBus"); } }