简单工厂的优点在于可以根据不同需要很方便的产生不同的对象。
使用简单工厂有以下几个要点需要注意:
- 一个抽象的工厂类,该工厂类有一个抽象的方法,该方法用于生产需要的对象。抽象工厂类也可以用接口替代,如果是一个具体的概念,例如车,就用抽象类。如果是抽象的概念,例如可以飞的,会游泳的。
- 继承了抽象工厂类的具体抽象类,该类用于产生需要的对象。
- 一个接口,所有需要被生产的类都实现该接口。
- 需要被生产的类。
下面是以一个生产交通工具的例子阐述:
一个抽象的工厂类:
package pattern;
public abstract class VehicleFactory {
abstract Movable create();
}
两个实现抽象工厂类的具体工厂类,一个用于生产飞机,一个用于生产小汽车
飞机工厂:
package pattern;
public class PlanFactory extends VehicleFactory {
public Movable create(){
return new Plane();
}
}
小汽车工厂类:
package pattern;
public class CarFactory extends VehicleFactory {
public Movable create(){
return new Car();
}
}
需要被生产的对象的类的接口:
package pattern;
public interface Movable {
void run();
}
继承了Movable的小汽车类:
package pattern;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2018/7/14.
*/
public class Car implements Movable {
public void run(){
System.out.println("小汽车呜呜呜。。。");
}
}
继承了Movable的飞机类:
package pattern;
public class Plane implements Movable {
@Override
public void run() {
System.out.println("飞机啊飞。。。。。");
}
}
主类:
package pattern;
/**
* Created by Administrator on 2018/7/14.
*/
public class Main {
public static void main(String argc[]){
// VehicleFactory vehicleFactory=new PlanFactory();
VehicleFactory vehicleFactory=new CarFactory();
Movable movable=vehicleFactory.create();
movable.run();
}
}
从main函数中可以看到,如果想生产不同的对象很简单,只需要new不同的具体工厂类。