public class Factory {
public static void main(String[] args) {
Car car1 = SimpleFactory.create("1");
CarFactory cf = new Car1FactoryMethod();
Car car2 = cf.create();
AbstractFactory af = new MultiFactory();
Car car3 = af.createCar();
Shoe shoe = af.createShoe();
}
}
interface Car {
}
class Car1 implements Car {
}
class Car2 implements Car {
}
// 简单工厂
class SimpleFactory {
public static Car create(String type) {
if("1".equals(type)) {
return new Car1();
}else if("2".equals(type)) {
return new Car2();
}
return null;
}
}
// 工厂方法
interface CarFactory {
Car create();
}
class Car1FactoryMethod implements CarFactory{
@Override
public Car create() {
return new Car1();
}
}
class Car2FactoryMethod implements CarFactory{
@Override
public Car create() {
return new Car2();
}
}
//抽象工厂
interface Shoe {
}
class Tyre implements Shoe {
}
interface AbstractFactory {
Car createCar();
Shoe createShoe();
}
class MultiFactory implements AbstractFactory{
@Override
public Car createCar() {
return new Car1();
}
@Override
public Shoe createShoe() {
return new Tyre();
}
}