任何可以产生对象的方法或者类都可以被称之为工厂,单例模式也是一种工厂。
抽象工厂
抽象工厂:
package com.xy.factory.abstractFactory;
public abstract class AbstractFactory {
abstract Vehicle createVehicle();
abstract Food createFood();
abstract Weapon createWeapon();
}
具体工厂:
package com.xy.factory.abstractFactory;
public class ModernFactory extends AbstractFactory {
@Override
Vehicle createVehicle() {
return new Car();
}
@Override
Food createFood() {
return new Bread();
}
}
抽象产品:
package com.xy.factory.abstractFactory;
public abstract class Food {
abstract void eat();
}
package com.xy.factory.abstractFactory;
public abstract class Vehicle {
abstract void go();
}
具体产品:
package com.xy.factory.abstractFactory;
public class Car extends Vehicle{
@Override
void go() {
System.out.println("Car go...");
}
}
package com.xy.factory.abstractFactory;
public class Bread extends Food {
@Override
void eat() {
System.out.println("吃面包");
}
}