Код: Выделить всё
public class Audi implements Car {
private String color;
private int turnAssistLevel;
public Audi() {
}
public Audi(String color) {
this.color = color;
}
public Audi(String color, int turnAssistLevel) {
this.color = color;
this.turnAssistLevel = turnAssistLevel;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getTurnAssistLevel() {
return turnAssistLevel;
}
public void setTurnAssistLevel(int turnAssistLevel) {
this.turnAssistLevel = turnAssistLevel;
}
}
public class Bmw implements Car {
private String color;
private boolean hasXDrive;
public Bmw() {
}
public Bmw(String color) {
this.color = color;
}
public Bmw(String color, boolean hasXDrive) {
this.color = color;
this.hasXDrive = hasXDrive;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isHasXDrive() {
return hasXDrive;
}
public void setHasXDrive(boolean hasXDrive) {
this.hasXDrive = hasXDrive;
}
}
< /code>
Я хотел бы написать несколько завод, используя заводские методы: < /p>
Допустим, я хочу иметь несколько заводских методов для возврата пустых автомобилей. Легко сделать: < /p>
public interface CarFactory {
public Car makeCar();
}
< /code>
в качестве реализации: < /p>
public class BmwCarFactory implements CarFactory {
public Car makeCar() {
return new Bmw();
}
}
< /code>
То же самое, что я мог бы сделать для Audi. < /p>
Теперь, скажем, мне нужен автомобиль с цветом. Как я вижу, мне нужно определить фабрику, которая знает, как делать автомобили с цветами: < /p>
public interface CarWithColorFactory {
Car makeCar(String color);
}
< /code>
Теперь, чтобы сделать BMW с цветом: < /p>
public class BmwWithColorCarFactory implements CarWithColorFactory {
public Car makeCar(String color) {
return new Bmw(color);
}
}
< /code>
То же самое для Audi. Или Audi с цветом и переворотом. Как бы я сделал это с помощью фабричного метода?public class SimpleCarFactory {
public Car makeBmw(String color, boolean hasXDrive) {
return new Bmw(color, hasXDrive);
}
public Car makeAudi(String color, int turnAssistLevel) {
return new Audi(color, turnAssistLevel);
}
}
Подробнее здесь: https://stackoverflow.com/questions/416 ... erent-para