静态工厂/普通工厂(factory)
概念:
由一个工厂对象决定创建出哪一种产品类的实例
优点:
外界可以不用直接创建具体产品对象,仅仅需要负责“消费”对象就可以了,而不必管这些对象究竟如何创建及如何组织的
适用:
出现了大量的产品需要创建,并且具有共同的接口,希望由实现了该接口的类来指定它所创建的对象的时候时,可以通过工厂方法模式进行创建。
示例代码:
/**
* 交通工具的接口
* 相当于Product
*/
public interface Moveable {
void run();
}
/**
* 交通工具的工厂类,用于生产一辆交通工具
* 相当于Creator
*/
public abstract class VehicleFactory {
abstract Moveable create(); // 具体怎样生产让子类去实现
}
/**
* 飞机工厂类,用于生产飞机
* 相当于ConcreteCreator
*/
public class PlaneFactory extends VehicleFactory{
public Moveable create() {
return new Plane();
}
}
/**
* 汽车工厂类,用于生产汽车
* 相当于ConcreteCreator
* @author 落尘曦2017.9.8
*/
public class CarFactory extends VehicleFactory{
public Moveable create() {
return new Car();
}
}
/**
* 相当于ConcreteProduct
*/
public class Plane implements Moveable{
public Plane(){};
public void run() {
System.out.println("开飞机...");
}
}
/**
* 相当于ConcreteProduct
* @author 落尘曦2017.9.8
*/
public class Car implements Moveable{
public Car(){}
public void run(){
System.out.println("开车...");
}
}
测试类:
/**
* 静态工厂模式(普通工厂)的测试
* 实现 :任意定制交通工具类型和生产过程
*/
public class Test {
public static void main(String[] args) {
Moveable moveable = new CarFactory().create(); // 用汽车工厂创建一交通工具(单例)
moveable.run();
Moveable moveable2 = new PlaneFactory().create(); // 用飞机工厂创建一交通工具(单例)
moveable2.run();
}
}