加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

经典的简单工厂模式示例代码

(2008-07-27 14:43:27)
标签:

it

package org.jzkangta.factorydemo03;

 

interface Car{
 public void run();
 public void stop();
}

 

class Benz implements Car{
 public void run(){
  System.out.println("Benz开始启动了。。。。。");
 }
 public void stop(){
  System.out.println("Benz停车了。。。。。");
 }
}

 

class Ford implements Car{
 public void run(){
  System.out.println("Ford开始启动了。。。");
 }
 public void stop(){
  System.out.println("Ford停车了。。。。");
 }
}

 

class Toyota implements Car{
 public void run(){
  System.out.println("Toyota开始启动了。。。");
 }
 public void stop(){
  System.out.println("Toyota停车了。。。。");
 }
}

 

class Factory{
 public static Car getCarInstance(String type){
  Car c=null;
  try {
   c=(Car)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();

  //当具体类有扩充时也不用对工厂类进行修改,只要新添加的类也在forName参数的包中!
  } catch (InstantiationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
  return c;
 }
}


public class FactoryDemo03 {       //主函数入口类

 public static void main(String[] args) {
  Car c=Factory.getCarInstance("Toyota");

  //当主函数需要创建某个具体实例,只需以那个类为参数调用工厂类的返回实例方法即可。
  if(c!=null){
   c.run();
   c.stop();
  }else{
   System.out.println("造不了这种汽车。。。");
  }
  

 }

}

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有