package com.spsoft.factorymethod;
interface Car {
public void start();
public void stop();
}
class Ford implements Car {
public void start() {
// TODO Auto-generated method stub
System.out.println("Ford start...");
}
public void stop() {
// TODO Auto-generated method stub
System.out.println("Ford stop...");
}
}
class Toyota implements Car {
public void start() {
// TODO Auto-generated method stub
System.out.println("Toyota start...");
}
public void stop() {
// TODO Auto-generated method stub
System.out.println("Toyota stop...");
}
}
class YuTongBus implements Car {
public void start() {
// TODO Auto-generated method stub
System.out.println("YuTong start...");
}
public void stop() {
// TODO Auto-generated method stub
System.out.println("YuTong stop...");
}
}
class KinglongBus implements Car {
public void start() {
// TODO Auto-generated method stub
System.out.println("Kinglong start...");
}
public void stop() {
// TODO Auto-generated method stub
System.out.println("Kinglong stop...");
}
}
interface AbstractFactory {
}
class CarFactory implements AbstractFactory {
private CarFactory() {
}
private static CarFactory carFactory = new CarFactory();
public static CarFactory getCarFactoryInstance() {
return carFactory;
}
public Car getCar(String type) {
Car car = null;
try {
car = (Car) Class.forName("com.spsoft.factorymethod." + type)
.newInstance();
} 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 car;
}
}
class BusFactory implements AbstractFactory {
private BusFactory() {
}
private static BusFactory busFactory = new BusFactory();
public static BusFactory getBusFactoryInstance() {
return busFactory;
}
public Car getBus(String type) {
Car car = null;
try {
car = (Car) Class.forName("com.spsoft.factorymethod." + type)
.newInstance();
} 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 car;
}
}
public class FactorymethodDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// need a Ford
CarFactory factory = CarFactory.getCarFactoryInstance();
Car ford = factory.getCar("Ford");
ford.start();
ford.stop();
BusFactory busFactory = BusFactory.getBusFactoryInstance();
Car bigBus = busFactory.getBus("YuTongBus");
bigBus.start();
bigBus.stop();
}
}