interface IFactory {
public IProduct produce();
}
interface IProduct {
public void drive();
}
public class FactoryMethod {
public static void main(String[] args) {
IFactory carFac = new CarFactory();
IProduct car = carFac.produce();
car.drive();
IFactory busFac = new BusFactory();
IProduct bus = busFac.produce();
bus.drive();
}
}
class CarFactory implements IFactory {
@Override public IProduct produce() {
return new Car();
}
}
class BusFactory implements IFactory {
@Override public IProduct produce() {
return new Bus();
}
}
class Car implements IProduct {
@Override public void drive() {
System.out.println("Car is driving......");
}
}
class Bus implements IProduct {
@Override public void drive() {
System.out.println("Bus is driving......");
}
}
interface IFactory {
public IProduct produce();
}