主要类:
1、产品抽象类。
2、工厂类(抽象类,且里面是静态方法)。
运行方式:
用户使用工厂直接调用里面的静态方法可以拿到具体产品,这个具体产品用使用他的抽象类表示。
/**
* @deprecated(交通工具抽象)
* @author Administrator
*
*/
public interface Vehicle {
public void start();
public void stop();
}
/**
* @deprecated(汽车实现)
* @author Administrator
*
*/
public class Cart implements Vehicle {
public void start() {
System.out.println("汽车启动");
}
public void stop() {
System.out.println("汽车停止");
}
}
飞机作为交通工具的一种,在天上飞行所以除了启动和停止之外还有飞行高度,我们使用flyAltitude来表示高度。
/**
* @deprecated(飞机类)
* @author Administrator
*
*/
public class Plane implements Vehicle {
/**
* 飞行高度
*/
private int flyAltitude;
public void start() {
System.out.println("飞机启动");
}
public void stop() {
System.out.println("飞机停止");
}
public int getFlyAltitude() {
return flyAltitude;
}
public void setFlyAltitude(int flyAltitude) {
this.flyAltitude = flyAltitude;
}
}
public abstract class VehicleFactory {
/**
*
* @param type 产生交通工具的类型 type=car或者plane
* @return
*/
public static Vehicle createVehicle(String type) throws Exception{
if("car".equals(type)) {
return new Car();
} else if("plane".equals(type)) {
return new Plane();
}
throw new Exception("没有对应的交通工具");
}
}
public class Production{ public static void main(String arg[]) { //造汽车 Vehicle car=VehicleFactory.createVehicle("car"); //造飞机
//造火车Vehicle plane=VehicleFactory.createVehicle("car");
}} 通过在VehicleFactory中传入 不同的参数 就可以 造出相应的交通工具 如果传入的参数找不到就抛出 异常。Vehicle train=VehicleFactory.createVehicle("train");
简单工厂模式主要设计到三个角色:
1、工厂类(Creator)
2、抽象产品(Production)
3、具体产品类(concrete production)
机构图: