抽象工厂模式
抽象类
/**
* 抽象工厂
*/
public abstract class AbstractFactory {
//汽车
public abstract VehicleCenter vehicleCenter(String vehicle);
//颜色
public abstract VehicleColor vehicleColor(String color);
}
/**
* 颜色工厂
*/
public class ColourFactory extends AbstractFactory {
@Override
public VehicleCenter vehicleCenter(String vehicle) {
return null;
}
@Override
public VehicleColor vehicleColor(String color) {
if (color == null) {
return null;
}
if (color.equals("BLACK")) {
return new BlackVehicleColor();
} else if (color.equals("BLUE")) {
return new BlueVehicleColor();
} else if (color.equals("RED")) {
return new RedVehicleColor();
}
return null;
}
}
/**
* 汽车工厂
*/
public class VehicleFactory extends AbstractFactory {
@Override
public VehicleCenter vehicleCenter(String vehicle) {
if (vehicle == null) {
return null;
}
if (vehicle.equals("AD")) {
return new ADVehicle();
} else if (vehicle.equals("BM")) {
return new BMVehicle();
} else if (vehicle.equals("BC")) {
return new BCVehicle();
}
return null;
}
@Override
public VehicleColor vehicleColor(String color) {
return null;
}
}
/**
* 工厂生产者
*/
public class FactoryProducer {
public static AbstractFactory getVehicle(String type) {
if (type.equals("VEHICLE")) {
return new VehicleFactory();
} else if (type.equals("COLOR")) {
return new ColourFactory();
}
return null;
}
}
汽车中心
public class ADVehicle implements VehicleCenter {
@Override
public String getVehicle() {
return "喜提奥迪车辆";
}
}
public class BCVehicle implements VehicleCenter {
@Override
public String getVehicle() {
return "喜提奔驰车辆";
}
}
public class BMVehicle implements VehicleCenter {
@Override
public String getVehicle() {
return "喜提宝马车辆";
}
}
/**
* 汽车中心
*/
public interface VehicleCenter {
String getVehicle();
}
颜色中心
public class BlackVehicleColor implements VehicleColor {
@Override
public String getColor() {
return "黑色的";
}
}
public class BlueVehicleColor implements VehicleColor {
@Override
public String getColor() {
return "蓝色的";
}
}
public class RedVehicleColor implements VehicleColor {
@Override
public String getColor() {
return "红色的";
}
}
/**
* 汽车颜色中心
*/
public interface VehicleColor {
String getColor();
}
测试抽象方法
public class TextAbstractFactory {
public static void main(String[] args) {
AbstractFactory vehicle = new FactoryProducer().getVehicle("VEHICLE");
//一款奥迪
VehicleCenter ad = vehicle.vehicleCenter("AD");
System.out.println(ad.getVehicle());
//黑色
AbstractFactory color = new FactoryProducer().getVehicle("COLOR");
VehicleColor black = color.vehicleColor("BLACK");
System.out.println(black.getColor());
}
}
输出:
喜提奥迪车辆
黑色的
Process finished with exit code 0