静态工厂实例代码

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 Factory{//工厂类,加入其它类型的车类也不用修改工厂类
  public static Car getCarInstance(String type){//根据type类型来得到不同的车
    Car c = null;
    try {
      //通过JAVA的反射机制实例化实现类,给出完整的 “包.类”名称
      //这里要类型转换
      c = (Car) Class.forName("net.esrib.Factory.FactoryDemo." + type).
          newInstance();
    }
    catch (ClassNotFoundException ex) {
    }
    catch (IllegalAccessException ex) {
    }
    catch (InstantiationException ex) {
    }
    return c;
  }
}

public class FactoryDemo {
  public static void main(String [] args){
       Car c=Factory.getCarInstance("Benz");
    }
}

  

posted @ 2012-02-06 17:21  cyjch  阅读(314)  评论(0编辑  收藏  举报