工厂模式
任何可以产生对象的方法或类,都可以称之为工厂。
单例模式也叫静态工厂。
简单工厂
相当于只能生产一个产品的抽象工厂。
好处:容易扩展单一产品。
public class SimpleVehicleFactory {
public Car createCar() {
return new Car();
}
public Plane createPlane() {
return new Plane();
}
}
可扩展性不好,添加新产品要改工厂。
抽象工厂
可以生产产品族。
好处:容易扩展产品族。
public abstract class AbstractFactory {
abstract Food createFood();
abstract Vehicle createVehicle();
}
abstract class Food {
abstract void eat();
}
abstract class Vehicle {
abstract void go();
}
工厂1
public class ModernFactory extends AbstractFactory{
Food createFood() { return new Cake(); }
Vehicle createVehicle() {return new Plane();}
}
class Plane extends Vehicle {
void go() {}
}
class Cake extends Food {
void eat() {}
}
工厂2
public class OldFactory extends AbstractFactory{
Food createFood() {return new Bread();}
Vehicle createVehicle() {return new Car();}
}
class Car extends Vehicle {
void go() {}
}
class Bread extends Food {
void eat() {}
}
从语义上,形容词用接口,实体用抽象类。