示例:
public class Parts {
public String specification;
public Parts(String specification) {
this.specification = specification;
}
public String getSpecification() {
return specification;
}
}
public abstract class Car {
public abstract Parts getWheels();
public abstract Parts getMirrors();
public abstract Parts getEngine();
public abstract Parts getBody();
}
public class BenQ extends Car {
@Override
public Parts getWheels() {
return new Parts("BenQ Wheels");
}
@Override
public Parts getMirrors() {
return new Parts("BenQ Mirrors");
}
@Override
public Parts getEngine() {
return new Parts("BenQ Engine");
}
@Override
public Parts getBody() {
return new Parts("BenQ Body");
}
}
public class BMW extends Car {
@Override
public Parts getWheels() {
return new Parts("BMW Wheels");
}
@Override
public Parts getMirrors() {
return new Parts("BMW Mirrors");
}
@Override
public Parts getEngine() {
return new Parts("BMW Engine");
}
@Override
public Parts getBody() {
return new Parts("BMW Body");
}
}
public class GeneralMotors extends Car {
@Override
public Parts getWheels() {
return new Parts("GeneralMotors Wheels");
}
@Override
public Parts getMirrors() {
return new Parts("GeneralMotors Mirrors");
}
@Override
public Parts getEngine() {
return new Parts("GeneralMotors Engine");
}
@Override
public Parts getBody() {
return new Parts("GeneralMotors Body");
}
}
public class CarType {
private Car car;
public static void main(String[] args) {
CarType type = new CarType();
Car car = type.getCar("BMW");
System.out.println("Wheels:" + car.getWheels().getSpecification());
System.out.println("Mirrors:" + car.getMirrors().getSpecification());
System.out.println("Engine:" + car.getEngine().getSpecification());
System.out.println("Bady:" + car.getBody().getSpecification());
}
public Car getCar(String carType) {
if ("BenQ".equals(carType)) {
car = new BenQ();
} else if ("BMW".equals(carType)) {
car = new BMW();
} else if ("GeneralMotors".equals(carType)) {
car = new GeneralMotors();
}
return car;
}
}