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("造不了这种汽车。。。");
}
}
}
加载中,请稍候......