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");
}
}